2011-02-07 14 views

risposta

6

vedo l'errore ur facendo qui

LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main); 

si r prendendo il layout come oggetto LinearLayout, si dovrebbe prendere il LinearLayout id

Try questo

LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01); 

Button b1 = new Button(this); 

b1.setText("Btn"); 

lnr.addView(b1); 
+0

Sì, ma il pulsante non è definito in xml. Voglio fare quanto segue: Button b = new Button (this); LinearLayout mainLayout = (LinearLayout) findViewById (R.layout.main); mainLayout.addView (b), ci provo ma ottengo un errore. È questo il modo di farlo? – user501223

+0

Qual è l'errore? Hai provato addView (b, nuovo LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))? – gngr44

+0

puoi mostrare l'errore logcat? – praveenb

3

è possibile aggiungere controlli a livello di codice se si desidera che nel codice, o anche un altro XML con una vista e un gonfiatore.

Qui potete leggere le nozioni di base: http://developer.android.com/guide/topics/ui/declaring-layout.html

+0

Ho letto il documento ma non parlare di come aggiungere nuovi controlli (creato in fase di esecuzione) in un file di layout XML esistente. – user501223

0

Si può fare abbastanza facilmente s etting di un ID sul layout su cui si desidera aggiungere viste. Di 'la tua main.xml simile a questa:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView android:id="@+id/label" 
     android:layout_width="fill_parent"/> 
    <LinearLayout android:id="@+id/container" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    </LinearLayout> 
</LinearLayout> 

lascia supporre che si desidera aggiungere le vostre opinioni aggiuntivi per il LinearLayout con id id/container. Nel metodo onCreate si potrebbe recuperare l'oggetto per un uso successivo:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mContainer = (ViewGroup)view.findViewById(R.id.container); 
} 

Ora è tutto pronto per aggiungere altre viste per il vostro contenitore ViewGroup:

LinearLayout theButtons = getButtons() 
mContainer.addView(theButtons); 

Nel metodo getButtons è necessario creare la vostra LinearLayout contenente i pulsanti necessari. O lo fai a livello di programmazione o gonfiando una vista definita in un file XML. Vedi LayoutInflater.inflate.

3

Ok, ho avuto modo di funzionare.

I passi sono i seguenti: primo gonfiare il layout XML, cioè,

View view = View.inflate(this, R.layout.main, null); 

Poi un'istanza dell'oggetto contenitore dal layout XML in una classe ViewGroup, cioè,

ViewGroup container = (ViewGroup) view.findViewById(R.id.myContainer); 

Poi creare un oggetto linearLayout, creare e aggiungere qualsiasi controllo necessario, aggiungere linearLayout all'oggetto contenitore e utilizzare setContentView sull'oggetto della vista, ovvero

container.addView(buttonsLayout); 
this.setContentView(view); 
+0

Perfetto grazie –

0

solo provare questo:

LinearLayout mainLinearLayout = (LinearLayout) findViewById(R.layout.llmain); 

ora pulsante Crea in modo dinamico come questo

Button btn1 = new Button(this); 
btn1.setText=("Button 1"); 
mainLinearLayout .addView(btn1); 

ora se si desidera aggiungere onether LinearLayout quindi aggiungerlo tasto poi

LinearLayout llinner = new LinearLayout(this); 

Button btn2 = new Button(this); 
btn2.setText=("Button 2"); 
mainLinearLayout .addView(btn2); 

llinner.addView(btn2); 

mainLinearLayout .addView(llinner); 
0
qui sotto

Prova questo:

LinearLayout ll =(LinearLayout)findViewById(R.id.linlay); 
Button b = new Button(this); 
b.setText("Hello"); 
l.addView(b); 

Questo potrebbe aiutare a

Problemi correlati