Doğru cevap, ancak bunu işe almak için bundan biraz daha yapmak gerekir.
Bir yapıcı üzerinden bir görünümü oluşturursanız (örneğin Button myButton = new Button();
), size yeni inşa çocuğu eklemeden önce, ebeveyn görünümün LayoutParams iç sınıf örneğine geçen, yeni inşa görünümde setLayoutParams
aramak gerekir Ebeveyn görünümüne
LinearLayout myLayout = findViewById(R.id.main);
Button myButton = new Button(this);
myButton.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
myLayout.addView(myButton);
LayoutParams önemlidir ayarlamak için emin olmak:
Örneğin, sizin LinearLayout varsayarak onCreate()
işlevi aşağıdaki kodu olabilir kimliği R.id.main
sahiptir. Her görünümün en az bir layout_width ve bir layout_height parametresine ihtiyacı vardır. Doğru iç sınıfı da almak önemlidir. Ben çocuk görünümün setLayoutParams için TableRow.LayoutParams bir örneğini geçen olmadığını çözene kadar düzgün görüntülemek için bir TableRow eklenen Görüntüleme alma ile mücadele etti.
nasıl görünümü progra yaratacak mmatically ama bu yeni görünüm için özellikle yazdıysanız bir XML düzen dosyası kullanarak? – SK9
@ SK9 Bir Bağlamdan, genellikle geçerli Etkinlikten alabileceğiniz bir LayoutInflater kullanırsınız. Bir şey gibi: LayoutInflater myInflater = getLayoutInflater; Görünüm Myview = myInflater.inflate (R.layout.myLayout, üst, yalancı); –
Aslında getLayoutInflater() Pencere sınıfı (değil Bağlam) gelir, ve bu Aktivite bir kolaylık yöntemidir. –