Can't make spinner's scrollbar always visible (Android)

后端 未结 6 1490
鱼传尺愫
鱼传尺愫 2020-12-10 16:55

I have such a problem - I want to make spinner\'s scrollbar always visible. But for spinner function

setScrollbarFadingEnabled(false);

caus

6条回答
  •  执笔经年
    2020-12-10 17:14

    Thank @nandeesh for his/her answer and also @Eng.Fouad for his/her answer on another page.

    public class VisibleScrollbarSpinner extends Spinner {
        @Override public boolean performClick() {
            final boolean superResult = super.performClick();
    
            try {
                final Field mPopupField = Spinner.class.getDeclaredField("mPopup");
                mPopupField.setAccessible(true);
                //noinspection ConstantConditions
                ((ListPopupWindow) mPopupField.get(this)).getListView().setScrollbarFadingEnabled(false);
                mPopupField.setAccessible(false);
            } catch (NoSuchFieldException | IllegalAccessException e) {
                Log.e(TAG, e.toString(), e);
            }
    
            return superResult;
        }
    
        public VisibleScrollbarSpinner(Context context) { super(context); } 
        public VisibleScrollbarSpinner(Context context, int mode) { super(context, mode); } 
        public VisibleScrollbarSpinner(Context context, AttributeSet attrs) { super(context, attrs); } 
        public VisibleScrollbarSpinner(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } 
        public VisibleScrollbarSpinner(Context context, AttributeSet attrs, int defStyleAttr, int mode) { super(context, attrs, defStyleAttr, mode); }
    }
    

提交回复
热议问题