2012-06-29 8 views
2

Мне нужно создать пользовательский вид, который расширяет RelativeLayout и просто должен иметь и imageView, как в том же размере этого customView.при создании cutomView не addView?

Мой код:

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

Если вы добавите View с помощью XML, то андроид будет осуществлять конструктору

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

И в вашем случае она пуста. Я думаю, это твоя проблема.

+0

Hell yeah! Я не могу поверить, что это было так просто, спасибо =) – yahya

+0

просто используйте LogCat в этом конструкторе. Если я прав, вы увидите текст своего журнала. Надеюсь, я прав) –

+0

Yeap, ты определенно прав =) Еще раз спасибо. Проблема решена =) – yahya

Смежные вопросы