代码之家  ›  专栏  ›  技术社区  ›  Worldmaster

如何将分隔符添加到下拉列表(微调器)中?

  •  0
  • Worldmaster  · 技术社区  · 6 年前

    before click

    after click - i'd like to add such blue line

    我想在下拉列表中添加分隔符。

    我使用了StackOverflow上找到的解决方案,但它们不起作用。

    这是我在XML片段中的XML代码

    <Spinner
         android:id="@+id/spinner1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:spinnerMode="dialog"
         android:background="@drawable/spinner">
    
    </Spinner>
    

    这是spinner.xml。定义边框、形状和图像(“点击按钮”)。

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item>
            <layer-list>
    
                <item>
                    <shape android:shape="rectangle">
                        <padding
                            android:left="0dp"
                            android:top="0dp"
                            android:right="0dp"
                            android:bottom="1.5dp"
                            />
    
                        <gradient android:startColor="@color/white" android:endColor="@color/white" android:angle="270" />
                        <stroke android:width="2px" android:color="@color/colorPrimary2" />
                        <corners android:radius="0dp" />
                    </shape>
                </item>
    
                    <item android:gravity="center|right" android:drawable="@drawable/ic_spinner_drop_down"/>
    
    
    
            </layer-list>
        </item>
    </selector>
    
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Hugo Allexis Cardona    6 年前

    这只适用于spinnermode=“DropDown”…对于对话模式,分隔符必须为 added during runtime via an adapter (引用的示例也使用下拉列表,但在实现它并将模式更改为对话框后,分隔符仍在显示)。

    只需尝试将此添加到 styles.xml 文件在 values 资源目录:

        <style name="SpinnerStyle" parent="Widget.AppCompat.ListView.DropDown">
            <item name="android:divider">#0000ff</item>
            <item name="android:dividerHeight">0.5dp</item>
        </style>
    
        <style name="SpinnerTheme" parent="AppTheme">
            <item name="android:dropDownListViewStyle">@style/SpinnerStyle</item>
        </style>
    

    然后,您可以将一个额外的子节点添加到 style 该文件中已存在的标记(将对所有微调器应用样式):

        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- ... -->
            <!-- ... -->
            <!-- ... -->
            <!-- ... some existing lines -->
    
            <!-- ... new line to add:-->
            <item name="android:dropDownListViewStyle">@style/SpinnerStyle</item>
        </style>
    

    或者…您只需将该样式添加到片段XML中的特定spinner标记中(这将仅将该样式应用于该spinner):

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:spinnerMode="dropdown"
            android:background="@drawable/spinner"
            android:theme="@style/SpinnerTheme">
        </Spinner>