Android:如何设置Spinner的最大大小?

5
这里是我的布局。
<?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的视图进行展示。但是当我选择一个较大的元素时,文本字段会被推到右边。有没有办法设置下拉框的最大尺寸,以便在选择元素后,使用省略号(“...”)或其他方式缩短选择?

3个回答

5
无需使用自定义适配器。使用android.R.layout.simple_spinner_item,然后将其从省略号跑马灯更改为末尾省略号。然后将您的新更改布局文件设置为布局ID或使用此布局文件。
<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" />

4
一个设置了 android:layout_width="wrap_content"Spinner 控件的大小由其内容决定。如果你想要省略一些内容,在创建行视图时需要在 SpinnerAdapter 中进行处理。
或者,硬编码一个固定大小的 android:layout_width
另外,可以使用 RelativeLayout 而不是使用 LinearLayout,并且通过将 Spinner 锚定到屏幕左侧和第一个 EditText 左侧来构造规则,使其占据行中剩余的空间。但我不确定如果内容太大会发生什么情况——可能会被截断。

1

将spinner的android:background="@null"设置为解决问题。 这也会隐藏下拉图标的可见性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接