Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Agregar varias vistas personalizadas al diseño mediante programación

Si por ejemplo tengo un diseño vacío como este:

Layout1.xml

  • No se puede agregar una vista personalizada a la barra de acciones de Android, ¿por qué?
  • Detectar clics largos en una vista personalizada?
  • MonoDroid: Error al llamar al constructor de la vista personalizada - TwoDScrollView
  • Obtener el ancho del panel de notificaciones de Android
  • Cómo agregar desplazamiento para una vista personalizada en Android
  • Cómo configurar windowDrawsSystemBarBackgrounds de forma programática?
  • <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> 

    Y algún otro Layout como este:

    Layout2.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <TextView android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3" android:layout_weight="1"/> </LinearLayout> 

    Me gustaría añadir layout2.xml a layout1.xml programación. Tendría que tener múltiples versión diferente layout2.xml que añadiría cuando quiera. Cada uno tendría texto diferente en TextView y botones.

    En el caso de la vista regular de Android normalmente lo haría de forma similar con addView :

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv1 = new TextView(this); tv1.setText("HELLO"); my_linear_layout.addView(tv1); Button btn2 = new Button(this); bt2.setText("WORLD"); my_linear_layout.addView(btn2); } 

    ¿Cómo puedo hacerlo si no tengo algo simple como TextView o Button, y si tengo mi propio xml definido View?

    ¿Sería posible poner de alguna manera todas las vistas dentro del adaptador como para un ListView y después conseguirlo cuando está necesitado y apenas llamada addView en esas vistas?

  • Escala Android de imágenes a densidad de pantalla
  • ¿Cómo hacer referencia al atributo de color en drawable?
  • Diseño del centro Android
  • Cómo inhabilitar / suprimir las advertencias IDEA "Problemas de procesamiento"
  • Android Studio: Rendering Problems Faltan estilos-tema correcto elegido para este diseño, No se pudo encontrar estilo con id
  • Ejemplo sencillo sobre cómo usar SwipeRefreshLayout con ListView
  • 3 Solutions collect form web for “Agregar varias vistas personalizadas al diseño mediante programación”

    Puede inflar el archivo layout2.xml, editar los textos y añadirlo al primer diseño:

     public class MyActivity extends Activity { private ViewGroup mLinearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout1); mLinearLayout = (ViewGroup) findViewById(R.id.linear_layout); addLayout("This is text 1", "This is first button", "This is second Button"); } private void addLayout(String textViewText, String buttonText1, String buttonText2) { View layout2 = LayoutInflater.from(this).inflate(R.layout.layout2, mLinearLayout, false); TextView textView = (TextView) layout2.findViewById(R.id.button1); Button button1 = (Button) layout2.findViewById(R.id.button2); Button button2 = (Button) layout2.findViewById(R.id.button3); textView1.setText(textViewText); button1.setText(buttonText1); button2.setText(buttonText2); mLinearLayout.addView(layout2); } } 

    Es posible que desee cambiar android:layout_height de la vista raíz de wrap_content para wrap_content .

    Layout1 contiene ScrollView como disposición primaria y LinearLayout principal como secundario si no hay elemento de fila más tamaño de pantalla ScrollView identifica elemento de desbordamiento con desplazamiento:

    Layout1.xml

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/my_linear_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView> 

    Utilice LayoutInflater para agregar un elemento de fila en el elemento principal LinearLayout:

     private LinearLayout my_linear_layout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout1); my_linear_layout = (LinearLayout) findViewById(R.id.my_linear_layout); for(int i=1;i<=5;i++){ View view = LayoutInflater.from(this).inflate(R.layout.layout2,null); TextView button1 = (TextView) view.findViewById(R.id.button1); Button button2 = (Button) view.findViewById(R.id.button2); TextView button3 = (TextView) view.findViewById(R.id.button3); button1.setText("HELLO " + i); button2.setText("HELLO "+i); button3.setText("HELLO "+i); my_linear_layout.addView(view); } } 

    Prueba este método

    Añadir id a linearlayout layout1.xml

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

    En crecer

      LinearLayout firstlayout=(LinearLayout)findviewbyId(R.id.firstlayout); LinearLayout secondlayoout=(LinearLayout)this.getLayoutInflater().inflate(R.layout.layout2,null); //inflating view from xml TextView btn1=(TextView)secondlayoout.findviewbyId(R.id.button1); btn1.settext("TEST"); firstlayout.addview(secondlayoout); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.