Adición de una vista a un LinearLayout en una posición especificada

Tengo el siguiente archivo main.xml con un LinearLayout

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1" android:id="@+id/llid"> <TextView android:text="Client profile" android:id="@+id/ProfileName" android:layout_width="fill_parent" android:textStyle="bold" android:layout_height="wrap_content" android:gravity="center_horizontal"> </TextView> <TextView android:text="Specs" android:id="@+id/Specs" android:layout_width="fill_parent" android:textStyle="bold" android:layout_height="wrap_content" android:gravity="center_horizontal"> </TextView> </LinearLayout> 

Añado una imagen a la LinearLayout a través de código en tiempo de ejecución como así

  ImageView image = new ImageView(this); image.setImageBitmap(bmp); LinearLayout ll = (LinearLayout) findViewById(R.id.llid); ll.addView(image); 

Sin embargo, quiero agregar el ImageView entre los 2 TextViews en mi LinearLayout. Parece que no puedo encontrar una forma en los documentos Android para agregar una vista antes de otra vista, o después. ¿Cómo puedo hacer esto?

NB : Llamo

 setContentView(R.layout.main); 

Antes de agregar el ImageView al LinearLayout.

Al agregar una View a un grupo de ViewGroup , puede especificar un índice que establezca la posición de la vista en el elemento principal.

Usted tiene dos puntos de vista y por lo tanto (contando desde cero) que desea añadir en la primera posición; Llame a ll.addView(image, 1); Para que se coloque entre los dos TextViews .

Los documentos indican que puede utilizar el índice para insertarlo donde desee. Veo que usted está utilizando la firma de la vista solamente, ¿usted intentó la firma con el parámetro del índice?

 public void addView(View child, int index) 
 setContentView(R.layout.main); ImageView img = (ImageView) findViewById(R.id.imagefield); img.setImageResource(your_image_here); 

Y en el xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1" android:id="@+id/llid"> <TextView android:text="Client profile" android:id="@+id/ProfileName" android:layout_width="fill_parent" android:textStyle="bold" android:layout_height="wrap_content" android:gravity="center_horizontal"> </TextView> <ImageView android:id="@+id/imagefield" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ImageView> <TextView android:text="Specs" android:id="@+id/Specs" android:layout_width="fill_parent" android:textStyle="bold" android:layout_height="wrap_content" android:gravity="center_horizontal"> </TextView> 

Añadir un ImageView en el xml, y si no se está utilizando, lo hacen invisible (image.setVisibility(View.INVISIBLE)) . De todos modos, no puede mostrar nada cuando no se establece ninguna imagen.

Me enfrenté a un problema similar. En mi caso quería añadir un LinearLayout en la última posición de otro LinearLayout. Para lograrlo, lo hice:

 LinearLayout parentLayout = (LinearLayout) findViewById(R.id.parentLayout); LinearLayout layout = new LinearLayout(this); layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); // add others views to your linear layout parentLayout.addView(layout, parentLayout.getChildCount()); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.