【问题标题】:spinner dropdown start from top of spinner微调器下拉菜单从微调器顶部开始
【发布时间】:2019-03-21 22:37:34
【问题描述】:

问题是 Spinner 下拉列表从 Spinner 的顶行开始,但它应该从 Spinner 的底行开始

正常状态

点击后

微调器 xml 代码

<Spinner
    android:id="@+id/spnSelectLanguage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:layout_marginTop="16dp"
    android:spinnerMode="dropdown"
    android:background="@drawable/spn_lang_dropdown_selector"
    android:gravity="center_vertical"
    android:popupBackground="#EAEAEA"
    android:textColor="#54a4db" />

代码

Spinner spnSelectLanguage = (Spinner)rootView.findViewById(R.id.spnSelectLanguage);
    ArrayAdapter<String> adapterLanguage= new ArrayAdapter<String> (context,R.layout.layout_lng_spinner_item,new String[]{"English","Arabic"});
    adapterLanguage.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spnSelectLanguage.setAdapter(adapterLanguage);

Style.xml

<style name="SpinnerStyle" parent="android:style/Widget.ListView.DropDown">
    <item name="android:divider">@color/grey</item>
    <item name="android:dividerHeight">1dp</item>
</style>

【问题讨论】:

  • 只是drawable selector。你可以把任何东西作为背景。

标签: android spinner android-spinner


【解决方案1】:

在你的微调器中:

android:overlapAnchor="false"

注意如果您支持低于 21 的 API,则必须复制并粘贴此属性,因为它适用于 API >= 21。

【讨论】:

  • 漂亮!花了将近 16 个小时寻找可以做的事情,以便我的布局中 AppCompatSpinner 的弹出下拉列表不会与微调器视图重叠。你摇滚!这应该是选定的答案。 注意该属性必须复制和粘贴,因为它可用于API &gt;= 21
【解决方案2】:

您可以在 Spinner xml 代码中设置此行:

android:spinnerMode="dropdown"
android:dropDownVerticalOffset="50dp"

这样,您的下拉视图将从顶部偏移开始。您可以硬编码偏移量或在运行时计算它并使用:

setDropDownVerticalOffset(int pixels)

更多内容: Android Spinner

【讨论】:

    【解决方案3】:

    对我来说,只有当我创建微调器样式并将“android:spinnerStyle”项目添加到我的主题样式时才能工作。

    我打开了我的/res/values/styles.xml,找到了我的主题(“AppTheme”)并像这样添加了&lt;item name="android:spinnerStyle"&gt;@style/custom_spinner&lt;/item&gt;

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>            
        <item name="android:spinnerStyle">@style/custom_spinner</item>
    </style>
    
    <style name="custom_spinner" parent="@android:style/Widget.Holo.Light.Spinner">
    </style>
    

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2023-03-23
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      相关资源
      最近更新 更多