我在我的应用程序中使用微调器,并使用自定义适配器填充微调器中的条目。一切正常,如点击它,设置选择值等,但当我尝试滚动微调器时,微调器本身移动到默认选择位置,无论它在哪里,无论是在顶部还是底部,如当我再次触摸它以滚动时,我将被置于默认选择。
您可以在下面的代码中找到适配器,微调器声明和微调器项目。
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或更低版本中运行得非常好。
答案 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"
>