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
- Gráficos actualizados dinámicamente con Achartengine
- ListView dinámico en la aplicación para Android
- Ejecutar ffmpeg como biblioteca en android
- Android Loading markers dinámicamente mejor estrategia
- Agregue textViews dinámicamente a un linearLayout
Mi resultado esperado
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>
- ¿Cómo puedo añadir mi diseño dinámico a ListView?
- Cómo dibujar un ShapeDrawable más pequeño dentro de otro shapeDrawable programaticamente
- cómo quitar los elementos del botón de radio programmaticaly
- Cambiar la altura del divisor de listview dinámicamente?
- Android RadioGroup / RadioButtons dinámicos como botones planos
- "UnsatisfiedLinkError" aparece cuando se utiliza "dynamic_cast" en Android NDK
- Cómo cargar una clase de una matriz de bytes en android?
- Gson con nombre dinámico (Android)
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.
- Error build.gradle con com.google.android.gms: play-services-maps: 9.4.0
- valor cero generado numéricamente usando la función aleatoria ()