¿Puedo configurar mi diseño de lista desplegable de Android para que ajuste los elementos largos?
Problema – Intentando hacer: He estado intentando sin éxito hacer que los elementos largos en una lista desplegable se ajusten automáticamente al tamaño. Realmente no estaba seguro de que fuera posible. Tengo una lista desplegable con opciones de preguntas, que pueden ser largas en algunos casos.
Lo que he intentado: He creado un diseño personalizado TextView
para el adaptador utilizado para poblar el AutoCompleteTextView
. He intentado lo habitual y combinaciones de wrap-content
, android:singleLine=false
, android:lines="2"
sin éxito. Realmente pensé que alguien ya habría intentado esto antes.
Diseño
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="25dp"
android:padding="5dp"
android:singleLine="false"
style="@style/MyDropDownTheme"
android:id="@+id/text1" android:hint="@string/hint_type">
</TextView>
ArrayAdapter
ArrayAdapter questions = new ArrayAdapter<>(context, R.layout.custom_drowdown_list_wrap, orgQuestions);
question.setAdapter(questions);
davy.ai
Solución – Envolver elementos largos en una lista desplegable
Si está intentando que los elementos largos en una lista desplegable se envuelvan, aquí hay algunas soluciones que puede intentar:
TextView
para el adaptador utilizado para poblar elAutoCompleteTextView
conandroid:maxLines
establecido en algo mayor que uno. Esto permitirá que el texto se envuelva automáticamente.ArrayAdapter
personalizado y anule el métodogetView()
para establecer las propiedades deTextView
dinámicamente según la longitud del texto.TextView
en un tema personalizado que permita el envoltorio de texto. En este caso, se utilizó el estiloMyDropDownTheme
para personalizar el estilo delTextView
.En el código proporcionado, parece que el diseño de
TextView
ya ha sido personalizado e incluyeandroid:singleLine=false
yandroid:lines="2"
. Sin embargo, estos atributos no parecen funcionar como se esperaba.Una posible solución es intentar establecer el atributo
android:maxLines
en su lugar en el diseño personalizado deTextView
:Luego, use este diseño personalizado en el
ArrayAdapter
utilizado para poblar elAutoCompleteTextView
:Esto debería permitir que los elementos largos en la lista desplegable se envuelvan automáticamente.