Nexus 5(Android 5.0)中Spinner下拉弹出位置发生变化

3

I am using a Spinner in my app. I used the basic spinner and this is my code:`

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    style="@style/SpinnerSpinnerTheme"
    android:spinnerMode="dropdown"
    android:layout_gravity="center_vertical"
    android:id="@+id/hj_order_date_spinner"
    />`

and this is how i instantiated in my activity

 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.hj_spinner_items,android.R.layout.simple_spinner_item);
   adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    dateSpinner.setPrompt("Sort By");
    dateSpinner.setAdapter(adapter);

This works fine in android 4.4.4 but on Nexus 5(using Lollipop) the drop down list/Popup changes it's position and hides the "Sort By" bar or the original spinner. Can anyone provide any insight as to what might be the issue?


1
请更详细地解释你所看到的问题。位置发生了什么变化? - alanv
弹出窗口覆盖了原始的Spinner视图。它的顶部应该与Spinner视图的底部对齐,但在Nexus 5中,它的顶部与Spinner视图的顶部对齐,因此Spinner提示文本被隐藏在弹出窗口后面。 - Saurabh
1
这就是在使用 Material 主题时旋转器应该看起来的样子。如果您不希望它看起来像 Material 旋转器,可以设置 android:overlapAnchor="false"。 - alanv
它有效了。 - Saurabh
1个回答

16

您可以使用android:overlapAnchor属性来指定下拉列表是否应覆盖锚点。当使用Material spinner样式时,此属性的默认值为true

<Spinner
    ...
    android:overlapAnchor="false" />

你知道如何让它像 G+ 一样工作吗?这样窗口就会占据整个宽度了吗?如果知道,请在此回答:https://dev59.com/A43da4cB1Zd3GeqP26rJ - android developer
1
你如何在Lollipop之前实现这种效果?它似乎不会影响先前的操作系统版本。 - Jack.Ramsden

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