自定义视图不添加子视图

时间:2014-02-28 09:06:52

标签: android android-custom-view

这是我的自定义视图:

public class FilterView extends RelativeLayout{

    public FilterView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }


    public void init(){
    //To test, I add just a test button that will change the color of the view
        Button b = new Button(getContext());
        b.setOnClickListener(new OnClickListener() {
            public void onClick(View v) { setBackgroundColor(Color.GREEN); }
        });
        b.setText("TEST");

        RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(100, 100);
        addView(b, lay);
        //Also have tried without settings the layoutparams...

        setBackgroundColor(Color.BLUE);
    }
}

我在这样的活动中添加了这个自定义视图(红色背景):

<com.example.android.FilterView android:id="@+id/filter"
    android:layout_width="100dip"
    android:background="#FF0000"
    android:layout_height="100dip"/>

结果是颜色的视图...... BLUE,在init()中设置的颜色,因此init中的代码被很好地调用。但是,视图内部没有任何内容,只有蓝色,没有名为“TEST”的按钮,并且没有可点击的区域,因为无论我点击哪个视图都不会变为绿色

2 个答案:

答案 0 :(得分:7)

抱歉,我犯了一个可怕的错误,

我的自定义视图是重新实现onLayout方法,并没有调用它的超级方法...添加超级解决了它。很抱歉打扰你这么愚蠢的问题..

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
}

答案 1 :(得分:0)

完成此行

addView(b, lay); 

this.addView(b, lay);