在Android 7.0中触摸时,微调器滚动到默认选择

时间:2017-05-10 21:58:01

标签: android android-layout scroll spinner android-7.0-nougat

我在我的应用程序中使用微调器,并使用自定义适配器填充微调器中的条目。一切正常,如点击它,设置选择值等,但当我尝试滚动微调器时,微调器本身移动到默认选择位置,无论它在哪里,无论是在顶部还是底部,如当我再次触摸它以滚动时,我将被置于默认选择。

您可以在下面的代码中找到适配器,微调器声明和微调器项目。

Spinner.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp">

    <Spinner
        android:id="@+id/toolbar_spinner"
        style="@style/ToolbarSpinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

spinner_item.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:background="?attr/selectableItemBackground">

    <View
        android:id="@+id/line_separator"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="@color/divider"
        android:layout_gravity="center"
        android:paddingStart="16dp"
        android:layout_marginLeft="8dp"
        android:visibility="gone"
        tools:visibility="visible"/>

    <TextView
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|start|left"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="8dp"
        android:paddingBottom="8dp"
        android:textColor="@color/black_dropdown"
        android:textSize="18sp"
        android:ellipsize="end"
        android:maxLines="1"
        tools:text="test"
        />
</LinearLayout>

下面的代码显示了我如何调用微调器适配器。:

SpinnerAdapter adapter = new SpinnerAdapter(mHelperActivity.getSupportActionBar().getThemedContext(), item_list);
mSpinner.setAdapter(adapter);
mSpinner.setDropDownWidth((Utilities.getScreenWidth(getContext()) * 3) / 4);
mSpinner.setSelection(Caches.getSelectedCategoryPosition());

我尝试过设置自定义主题,自定义popuptheme但是没有收获。

P.S。:这只发生在Android 7中,它在Android 6或更低版本中运行得非常好。

1 个答案:

答案 0 :(得分:0)

尝试从微调器中删除样式

style="@style/ToolbarSpinner"

<Spinner
    android:id="@+id/toolbar_spinner"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

我遇到了同样的问题,在我的情况下,它使用的是主题(popupTheme和主题)

   <Spinner android:id="@+id/spinner"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
                     android:gravity="bottom"
                     local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                     local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                    >