2

私はRelativeLayoutを拡張するカスタムビューを作成する必要があり、このcustomViewと同じサイズのimageViewが必要です。

私のコードは次のとおりです。

public class MyCustomButton extends RelativeLayout {

ImageView buttonCoverImage;

public MyCustomButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

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

public MyCustomButton(Context context) {
    super(context);

    setClickable(true);
    setFocusable(true);
    setEnabled(true);

    buttonCoverImage = new ImageView(getContext());

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    setLayoutParams(lp);

    lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

    buttonCoverImage.setLayoutParams(new RelativeLayout.LayoutParams(100, 100));

    buttonCoverImage.setBackgroundResource(R.drawable.button_selector);
    buttonCoverImage.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            performClick();
        }
    });

    this.addView(buttonCoverImage);
}   
}

そしてxmlで、私はこのビューを次のように作成しました:

問題は、buttonCoverImageが表示されないことです。どういうわけか、作成されていないか、myCustomViewに追加されていません...問題は何でしょうか?

4

1 に答える 1

4

View by xmlを追加すると、androidはコンストラクターを実装します

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

そしてあなたの場合、それは空です。それはあなたの問題だと思います。

于 2012-06-29T09:56:17.697 に答える