2011-02-07 16 views

Respuesta

6

veo el error ur haciendo aquí

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

Usted R teniendo el diseño como objeto LinearLayout, usted debe tomar el id LinearLayout

Try esto

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

Button b1 = new Button(this); 

b1.setText("Btn"); 

lnr.addView(b1); 
+0

Sí, pero el botón no está definido en el xml. Quiero hacer lo siguiente: Botón b = Botón nuevo (esto); LinearLayout mainLayout = (LinearLayout) findViewById (R.layout.main); mainLayout.addView (b), pruebo esto pero obtengo un error. ¿Es esta la manera de hacerlo? – user501223

+0

¿Cuál es el error? ¿Has probado addView (b, new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))? – gngr44

+0

¿puede mostrar el error de logcat? – praveenb

3

puede agregar controles mediante programación si desea que en su código, o incluso otro XML con una visión y un Inflater.

Aquí se puede leer lo básico: http://developer.android.com/guide/topics/ui/declaring-layout.html

+0

He leído el documento, pero no se menciona cómo añadir nuevos controles (creada en tiempo de ejecución) a un archivo de diseño xml existente. – user501223

0

Puede hacer esto bastante fácil por s crear una identificación en el diseño en el que desea agregar vistas. Digamos que su main.xml aspecto:

<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> 

supongamos que desea añadir sus puntos de vista adicionales a la LinearLayout con id id/container. En el método de onCreate se podía recuperar ese objeto para su uso posterior:

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

Ahora usted está listo para agregar otros puntos de vista a su contenedor ViewGroup:

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

En el getButtons método que se necesita para crear su LinearLayout que contiene los botones que necesita. O lo hace mediante programación o inflando una vista definida en un archivo XML. Ver LayoutInflater.inflate.

3

Ok, tengo que funcionar.

Los pasos son los siguientes: Primera inflar el diseño xml, es decir,

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

Entonces instanciar el objeto contenedor de la disposición xml en una clase ViewGroup, es decir,

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

Entonces cree un objeto linearLayout, cree y agregue todos los controles necesarios, agregue linearLayout al objeto contenedor y use setContentView en el objeto de vista, es decir,

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

Perfecto gracias –

0

acaba de intentar esto:

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

ahora botón crear dinámicamente como esto

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

ahora si desea agregar onether LinearLayout después añadirlo a continuación el botón a continuación

LinearLayout llinner = new LinearLayout(this); 

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

llinner.addView(btn2); 

mainLinearLayout .addView(llinner); 
0

Pruebe esto:

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

Esto podría ayudarle a

Cuestiones relacionadas