studio - spinner en android que es
Cómo envolver texto largo en un spinner (2)
Defina un diseño personalizado y úselo con la ruleta y el adaptador.
Tengo dos controles spinner y EditText dentro de una vista de diseño de tabla en una fila separada. Los hilanderos están llenos de datos. Mi problema es que los datos (textos) que se llenan en los giradores son demasiado largos para ajustarse al tamaño de la pantalla. Por lo tanto, los giradores se ven obligados a estirar innecesariamente estirando otros controles en otra fila.
Es imprescindible para mí mostrar los textos en la ruleta. Por lo tanto, el uso de puntos suspensivos no es una opción. Si es posible, ¿cómo puedo envolver el extenso texto en los rotuladores?
Paso 1. TextView con texto envuelto
Lo primero que debe hacer es forzar TextView
simple para ajustar el texto. Es fácil:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:text="very long text that will be wrapped to next line" />
Tenga en cuenta el atributo singleLine
aquí.
Paso 2. Diseño personalizado
Ahora, de alguna manera, deberíamos establecer el atributo singleLine
en false
en TextView
utilizado por Spinner
para mostrar el elemento en la lista.
En su código, probablemente tenga lugar donde crear el adaptador para usarlo con Spinner
:
this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
android.R.layout.simple_spinner_dropdown_item);
La idea es copiar el diseño android.R.layout.simple_spinner_dropdown_item a su proyecto. A continuación, singleLine
configurando el atributo singleLine
como false
en CheckedTextView
:
Para esto, agregue el archivo a la carpeta res/layout
llamado multiline_spinner_dropdown_item.xml
con el siguiente código:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="false"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />
Tenga en cuenta que este archivo es idéntico al diseño de android.R.layout.simple_spinner_dropdown_item , excepto que tiene una singleLine
establecida en false
ahora.
Paso 3. Crear un adaptador con un diseño personalizado
Modifique su código de creación de adaptador a:
this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
R.layout.multiline_spinner_dropdown_item);
Aquí está la captura de pantalla del ejemplo de SpinnerActivity
modificado de Android SDK: