es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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);
Tags:  , , ,

Answer

  1. Avatar for 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:

    • Cree un diseño personalizado de TextView para el adaptador utilizado para poblar el AutoCompleteTextView con android:maxLines establecido en algo mayor que uno. Esto permitirá que el texto se envuelva automáticamente.
    • Use un ArrayAdapter personalizado y anule el método getView() para establecer las propiedades de TextView dinámicamente según la longitud del texto.
    • Configure el estilo de su TextView en un tema personalizado que permita el envoltorio de texto. En este caso, se utilizó el estilo MyDropDownTheme para personalizar el estilo del TextView.

    En el código proporcionado, parece que el diseño de TextView ya ha sido personalizado e incluye android:singleLine=false y android: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 de TextView:

    <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:maxlines="2" establezca="" el="" número="" máximo="" de="" líneas="" en="" 2="" style="@style/MyDropDownTheme" android:id="@+id/text1" android:hint="@string/hint_type">
    </textview>
    

    Luego, use este diseño personalizado en el ArrayAdapter utilizado para poblar el AutoCompleteTextView:

    ArrayAdapter questions = new ArrayAdapter<>(context, R.layout.custom_drowdown_list_wrap, orgQuestions);
    question.setAdapter(questions);
    

    Esto debería permitir que los elementos largos en la lista desplegable se envuelvan automáticamente.

Comments are closed.