Пользовательский макет в android: кнопка не отображается

Итак, ребята,

Я создал пользовательский макет, который расширяет ViewGroup.Earlier, я сделал пользовательское представление, но позже я обнаружил, что он не может содержать детей, как кнопки. Я расширил группу просмотра, потому что хочу добавить кнопки, например, в линейном макете, просто со свойствами светящихся на ощупь. Все остальное понравится в линейной компоновке.

Класс WrapLayout:

public class WrapLayout extends ViewGroup { 
boolean drawGlow = false;
float glowX = 0;
float glowY = 0;
float radius = 20;
Paint paint = new Paint();
{
 paint.setAntiAlias(true);
 paint.setColor(3515877);
 paint.setAlpha(50);
};
public WrapLayout(Context context, AttributeSet attrs) {

 super( context, attrs );
 setWillNotDraw(false);
}
public WrapLayout(Context context, AttributeSet attrs, int defStyle) {

 super( context, attrs, defStyle );
 setWillNotDraw(false);
}
public WrapLayout(Context context) {
 super(context);
 setWillNotDraw(false);
}
public void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 if(drawGlow)
 canvas.drawCircle(glowX, glowY, radius, paint);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
 // TODO Auto-generated method stub
}
@Override
public boolean onTouchEvent(MotionEvent event){
 if(event.getAction() == MotionEvent.ACTION_DOWN){
 drawGlow = true;
 }else if(event.getAction() == MotionEvent.ACTION_UP)
 drawGlow = false;
 glowX = event.getX();
 glowY = event.getY();
 this.invalidate();
 return true;
}

}

Затем я инициализировал файл activity_main.xml следующим образом:

<button android:id="@+id/button1" ...="" <="" button=""> <p> <span>MainActivity</span>:</p> <pre class="prettyprint linenums">public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 }

РЕЗУЛЬТАТ: ничего, кроме пустого экрана.

РЕШЕНИЕ: Что я могу сделать?

С уважением

1 ответ

вы переопределяете onLayout но вы не назначаете положение детям, поэтому вы ничего не видите. Если вы не хотите переопределять onLayout, вы должны использовать (extends) одну из конкретных реализаций ViewGroup, предоставляемых каркасом

licensed under cc by-sa 3.0 with attribution.