Подтвердить что ты не робот

Как обернуть длинный текст в прядильщик

У меня есть два элемента управления spinner и EditText в представлении макета таблицы в отдельной строке. Прядильщики заполнены данными. Моя проблема заключается в том, что данные (тексты), заполненные в прядильщики, слишком длинны, чтобы соответствовать размеру экрана. Поэтому прядильщики вынуждены растягивать излишне растягивающие другие элементы управления в другой строке.

Мне нужно показать тексты в прядильщике. Следовательно, использование эллипсов не является вариантом. Если возможно, как можно обернуть длинный текст на прядильщиках?

4b9b3361

Ответ 1

Шаг 1. TextView с завернутым текстом

Первое, что нужно сделать, это заставить простой TextView обернуть текст. Его легко:

<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" />

Обратите внимание на атрибут singleLine.

Шаг 2. Пользовательский макет

Теперь нам нужно как-то установить singleLine атрибут false в TextView, используемый Spinner, чтобы показать элемент в списке.

В вашем коде у вас, вероятно, есть место, где вы создаете адаптер для использования с Spinner:

this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                android.R.layout.simple_spinner_dropdown_item);

Идея состоит в том, чтобы скопировать макет android.R.layout.simple_spinner_dropdown_item в ваш проект. Затем измените его, установив атрибут singleLine в false в CheckedTextView:

Для этого добавьте файл в папку res/layout с именем multiline_spinner_dropdown_item.xml со следующим кодом:

<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" />

Обратите внимание, что этот файл идентичен макете android.R.layout.simple_spinner_dropdown_item, за исключением того, что он singleLine установлен на false сейчас.

Шаг 3. Создание адаптера с настраиваемым макетом

Измените код создания адаптера на:

this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                 R.layout.multiline_spinner_dropdown_item);

Вот скриншот из модифицированного примера SpinnerActivity из Android SDK:

enter image description here

Ответ 2

Определите пользовательский макет и используйте его со счетчиком и адаптером.