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.
- Los niños de CoordinatorLayout no son de pantalla completa
- ¿Cómo desplazar horizontalmente RecyclerView de forma programática?
- Botón de acción flotante inesperado ancla cambio de gravedad
- ¿Cómo agregar GLSurfaceView entre vistas de Android?
- ¿Cómo implementar un evento Swipe para ver Flipper en un ViewPager?
¿Cómo puede conservar el mismo comportamiento en cada ambiente?
Comportamiento esperado:
Lo que obtuve
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); }
- cambiar el estilo de editar texto en android
- ¿Dónde está una referencia al diseño de la interfaz de usuario de Android de XML?
- Desplazar la columna de Gridview hacia arriba y hacia abajo al tocar esa columna
- Cómo desplazarse por programación a la parte inferior de una vista de reciclaje?
- Android: Diferentes estilos (textSize) para diferentes tamaños de diseño
- Cómo mostrar la barra de pestañas en la parte inferior, -Tab con Fragmento
- Cómo obtiene "android:" valores de etiqueta en una vista personalizada
- No funciona Notifydatasetchange en RecyclerView con selección de centro Horizontal Scrollview?
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); }
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>