Android: How to set the maximum size of a Spinner?

给你一囗甜甜゛ 提交于 2019-12-23 16:13:26

问题


Here is my layout

<?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>

I inflate this layout as an AlertDialog's view. But when I pick a large element, the text fields get pushed out to the right. Is there any way to set the maximum size of the spinner so after choosing an element, it shortens the choice with an ellipsis ("...") or something?


回答1:


The size of a Spinner set have android:layout_width="wrap_content" is determined by its content. If you want things ellipsized, that's up to you in your SpinnerAdapter, when you create your row Views.

Or, hard-wire an android:layout_width that is fixed in size.

Or, instead of using LinearLayout, use RelativeLayout and structure your rules such that the Spinner takes up the remaining space on the row, by anchoring it to the left side of the screen and to the left side of the first EditText. Though I'm not 100% certain what then happens if the content is too big -- it probably just gets truncated.




回答2:


No need to use a custom adapter. Use the android.R.layout.simple_spinner_item and then change it from ellipse marquee to end ellipse. Then set your new change layout file as layout id or use this layout file

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



回答3:


Set spinner android:background="@null" to solve the problem. This will also hide the dropdown icon visibility



来源:https://stackoverflow.com/questions/2390418/android-how-to-set-the-maximum-size-of-a-spinner

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!