Añadiendo TextView en LinearLayout como chips igual que la sugerencia de dirección de Gmail

He estado creando Chips como Gmail y la mayoría de la aplicación social android para la dirección.

What

He estado agregando valores en LinearLayout está funcionando bien, siempre y cuando sea menor que el ancho del dispositivo. Tan pronto como es la longitud más que el ancho del dispositivo que se desorden.

¿Cómo puede conservar el mismo comportamiento en cada ambiente?

Comportamiento esperado:

Comportamiento Esperado

Lo que obtuve

Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

Fragmento de código:

 <LinearLayout android:id="@+id/chipsBoxLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <!--Layout to add Chips like Gmail application--> </LinearLayout> 

 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1); params.setMargins(5, 0, 5, 0); Iterator<Contact> iterContacts = contacts.iterator(); while(iterContacts.hasNext()) { Contact contact = iterContacts.next(); TextView t = new TextView(MainActivity.this); t.setLayoutParams(params); t.setPadding(5, 5, 5, 5); t.setText(contact.getContactName()); t.setTextColor(Color.WHITE); t.setBackgroundColor(Color.BLUE); chipsBoxLayout.addView(t); } 

Según Rethinavel Pillai,

FlowLayout funciona como se espera en la adición de vistas que me alojaré por sí mismo si se agrega dentro de FlowLayout .

Fragmento de código:

 <com.FlowLayout android:id="@+id/chips_box_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="start" > </com.FlowLayout> 

 FlowLayout chipsBoxLayout; chipsBoxLayout = (FlowLayout)findViewById(R.id.chips_box_layout); FlowLayout.LayoutParams params = new FlowLayout.LayoutParams(FlowLayout.LayoutParams.WRAP_CONTENT, FlowLayout.LayoutParams.WRAP_CONTENT); params.setMargins(5, 5, 5, 5); Iterator<Contact> iterContacts = contacts.iterator(); while(iterContacts.hasNext()) { Contact contact = iterContacts.next(); TextView t = new TextView(MainActivity.this); t.setLayoutParams(params); t.setPadding(5, 5, 5, 5); t.setText(contact.getContactName()); t.setTextColor(Color.WHITE); t.setBackgroundColor(Color.BLUE); chipsBoxLayout.addView(t); } 

Introduzca aquí la descripción de la imagen

Usa LinearLayout, pero google no lo usa. El diseño lineal no romperá las líneas y emitirá todo a una línea. Chips en gmail funciona dentro de textView normal. Utiliza la cadena spannable para emitir imágenes en lugar de texto, o color de fondo, o smth más. Mira aquí http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/com/android/ex/chips/RecipientEditTextView.java#RecipientEditTextView Hay código cómo funciona.

FlowLayout funcionará, encontrar la URL que se indica a continuación,

https://github.com/ApmeM/android-flowlayout

@Rethinavel Pillai tiene razón

Creo que el problema es que estás usando

 android:layout_width="match_parent" 

¿Qué tal si usas la suma de peso en su lugar …?

Trate de que: uso de la propiedad de peso: Tengo que utilizar en mi aplicación y que el trabajo bien, es un muy útil también y guardar el tiempo.

 <LinearLayout android:id="@+id/lLListImages" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:orientation="horizontal" android:weightSum="1" > <Button android:id="@+id/button1" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.30" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.20" android:text="Button" /> <Button android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.35" android:text="Button" /> <Button android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.15" android:text="Button" /> </LinearLayout> 
  • Ventaja de usar Single TableLayout en lugar de LinearLayouts múltiples como TableRow extends LinearLayout only
  • Margen de la vista raíz de un fragmento no registrada (cuando se utiliza en ViewPager)
  • Cómo hacer aplicaciones hermosas y con estilo como Timely
  • Cómo agregar texto a la imagen y guardar como nueva imagen
  • ¿Se trata de una presentación de notificación Android de Android (RemoteView)?
  • View.setPadding acepta sólo en px, ¿hay de todos modos setPadding en dp?
  • La barra de herramientas no se muestra desde la barra de herramientas de contracción
  • ¿Qué unidad de medida define setMinimumWidth () en una vista de android?
  • Android: el atributo layout_marginRight no funciona en RelativeLayout
  • No conseguir el pulgar con géneros - jugador de música universal
  • RecyclerView item layout_weight, tamaños no actualizados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.