Android: как установить максимальный размер Spinner?

Вот мой макет

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          android:layout_width="fill_parent" android:id="@+id/LinearLayout01"
         android:layout_height="wrap_content">

    <Spinner android:text="@+id/AutoCompleteTextView01"
                       android:id="@+id/Spinner01"
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:width="130dp"></Spinner>
    <EditText android:layout_height="wrap_content"
              android:layout_width="wrap_content"
             android:id="@+id/Chapter" android:width="30dp"></EditText>
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/TextView01" android:text=":"></TextView>
    <EditText android:layout_height="wrap_content"
              android:layout_width="wrap_content" android:id="@+id/Verse"
              android:width="40dp"></EditText>

</LinearLayout>

Я расширяю этот макет как представление AlertDialog. Но когда я выбираю большой элемент, текстовые поля смещаются вправо. Есть ли способ установить максимальный размер счетчика, чтобы после выбора элемента он сокращал выбор многоточием ("...") или чем-то еще?


person Epaga    schedule 05.03.2010    source источник


Ответы (3)


Размер набора Spinner android:layout_width="wrap_content" определяется его содержимым. Если вы хотите, чтобы вещи были эллиптическими, это зависит от вас в вашем SpinnerAdapter, когда вы создаете свои представления строк.

Или подключите android:layout_width фиксированного размера.

Или вместо LinearLayout используйте RelativeLayout и структурируйте свои правила таким образом, чтобы Spinner занимало оставшееся место в строке, привязывая его к левой стороне экрана и к левой стороне первого EditText. Хотя я не уверен на 100%, что произойдет, если содержимое будет слишком большим — вероятно, оно просто усекается.

person CommonsWare    schedule 05.03.2010

Нет необходимости использовать специальный адаптер. Используйте android.R.layout.simple_spinner_item, а затем измените его с эллипса на конечный эллипс. Затем установите новый файл макета изменения в качестве идентификатора макета или используйте этот файл макета.

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingRight="10dp"
    android:ellipsize="end" />
person Indrajit    schedule 23.07.2013

Установите счетчик android:background="@null", чтобы решить проблему. Это также скроет видимость раскрывающегося значка.

person vishnuc156    schedule 20.09.2019