Añadir vista horizontal y verticalmente en LinearLayout dinámicamente

Quiero agregar la vista dinámica en un LinearLayout horizontal. Pero mi problema es si no hay espacio en horizontal que debe colocarse automáticamente en vertical.

Mi imagen

introduzca la descripción de la imagen aquí

Mi resultado esperado

introduzca la descripción de la imagen aquí

Mis códigos son

for (int j = 0; j < jobDet.getKeywords().length; j++) { RelativeLayout tr_head = (RelativeLayout) getLayoutInflater().inflate(R.layout.tag_lay, null); TextView label_date = (TextView) tr_head.findViewById(R.id.tag_name); label_date.setText(jobDet.getKeywords()[j]); keywordL.addView(tr_head, new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); } 

Mi "tag_lay.xml"

  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="30dp" android:id="@+id/tag_name" android:paddingLeft="10dp" android:paddingRight="10dp" android:background="@drawable/round_edit_box" android:text=" PHP " android:gravity="center" android:lines="1" android:layout_marginRight="5dp"/> </RelativeLayout> 

No puede hacer eso con Single LinearLayout porque tiene orientación VERTICAL u HORIZONTAL . Te sugiero que eche un vistazo a FlexboxLayout de Google . Es una biblioteca que proporciona un diseño donde se puede lograr una visión similar. Puede agregar esta biblioteca agregando la siguiente línea al archivo gradle del nivel de la aplicación:

 compile 'com.google.android:flexbox:0.1.3' 

Puede cambiar la keywordL a FlexboxLayout de LinearLayout . Un código de ejemplo para el diseño del contenedor puede ser algo como a continuación:

 <com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/flexbox_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:alignContent="flex_start" app:alignItems="flex_start" app:flexWrap="wrap"/> 

Puede cambiar el valor de alignContent , alignItems y flexWrap según su requerimiento. Aunque esto debería funcionar porque está funcionando para mí. Mientras que agrega el childs usted puede hacer algo como abajo:

 for (int j = 0; j < jobDet.getKeywords().length; j++) { RelativeLayout tr_head = (RelativeLayout) getLayoutInflater().inflate(R.layout.tag_lay, keywordL, false ); TextView label_date = (TextView) tr_head.findViewById(R.id.tag_name); label_date.setText(jobDet.getKeywords()[j]); keywordL.addView(tr_head); } 

Por favor, hágamelo saber si tiene problemas para implementar.

  • Utilizar el editor de diseño de manera efectiva en diseños con fragmentos no estáticos
  • Registro / cancelación de registro dinámico de un receptor de difusión en android
  • ¿Cómo puedo obtener el texto dinámico ToggleButton en android?
  • Android: Creación de una vista de lista dinámica
  • ¿Actualizar dinámicamente el cuadro de autocompletar en Android?
  • ¿Cómo puedo crear elementos de menú dinámicamente?
  • Measure () no funciona correctamente con diseños dinámicos y textView - Android
  • Android, las imágenes creadas dinámicamente no pueden ejecutar el arrastre gota
  • Cómo mostrar emoticonos en Android
  • Cómo cambiar dinámicamente los elementos de Spinner
  • Cómo rellenar un GridView con ImageViews dinámicamente / mediante programación utilizando un ImageAdapter
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.