2017-05-10 47 views
0

我在我的應用程序中使用微調器,並使用自定義適配器來填充微調器中的條目。一切工作正常,像點擊它,設置選擇值等,但當我嘗試在微調器上滾動時,微調器本身將移動到默認選擇位置,而不管它在哪裏,無論它在頂部還是底部,如一旦我再次觸摸它滾動,我就被置於默認選擇。微調控制器在Android 7.0中觸摸時默認選擇觸摸

您可以在下面的代碼中找到適配器,微調器聲明和微調器項目。

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

如果您entiries值對於Spinner>?調用者適配器調用中的 – Ibrahim

+0

,名爲item_list –

+0

'mSpinner.setDropDownWidth((Utilities.getScreenWidth(getContext())* 3)/ 4); mSpinner.setSelection(Caches.getSelectedCategoryPosition());' 請嘗試哈希這行代碼並嘗試,我不知道你爲什麼用這種方式提交你的自我... – Ibrahim

回答

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" 
        >