问题是Spinner
下拉列表从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>
答案 0 :(得分:11)
在你的微调器中:
android:overlapAnchor="false"
注意如果您支持的API低于21,则必须复制并粘贴此属性,因为它可用于API&gt; = 21。
答案 1 :(得分:8)
您可以在Spinner xml代码中设置此行:
android:spinnerMode="dropdown"
android:dropDownVerticalOffset="50dp"
有了这个,你的下拉视图将从顶部偏移开始。您可以对偏移号进行硬编码或在运行时计算它并使用:
setDropDownVerticalOffset(int pixels)
更多内容: Android Spinner
答案 2 :(得分:0)
对我来说,只有当我创建了微调器样式并将“ android:spinnerStyle”项添加到主题样式时,该参数才起作用。
我打开了/res/values/styles.xml
,找到了主题(“ AppTheme”)并添加了<item name="android:spinnerStyle">@style/custom_spinner</item>
,如下所示:
<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>