2013-09-20 3 views
6

У меня проблемы с добавлением пользовательского класса в мою основную деятельность.Как добавить пользовательский класс, который расширяет представление до основной?

код в моем пользовательском классе:

public class DetailView extends View { 

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

     this.setBackgroundColor(0xFF00FF00); 



    } 
} 

код в основной деятельности:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    linearLayout = (LinearLayout) findViewById(R.id.linearLayout1); 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    linearLayout.setOrientation(LinearLayout.VERTICAL); 


    txt = new TextView(this); 
    txt.setText("hello"); 
    txt.setId(6); 
    txt.setLayoutParams(params); 
    linearLayout.addView(txt); 

    DetailView detailView = new DetailView(this.getApplicationContext()); 
    linearLayout.addView(detailView); 

} 

Почему нельзя есть увидеть DetailView? Im новое для разработки Android, поэтому мне нужна любая помощь, которую я могу получить, или хорошие ссылки или что-то еще. Спасибо

+0

Я думаю, что вы не установили высоту/ширину View –

+0

как установить ширину и высоту? – Jojo

+0

Почему вы не устанавливаете этот макет из XML? – gunar

ответ

3

Вид добавлен, но он не имеет установленного размера. Глядя на существующий код, я думаю, вы хотите, чтобы он заполнил ширину и имел небольшую высоту - просто предполагая. Так что попробуйте следующее:

DetailView detailView = new DetailView(this); 
params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 2); // 2 pixels height 
linearLayout.addView(detailView, params); 

Кроме того, контекст DetailView является деятельность, а не контекст приложения.

+0

Ну ладно, спасибо, поэтому я должен изменить getApplicationContext () и получить контекст основной деятельности? – Jojo

+0

Да, но вам нужно также установить параметры. – gunar

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