Невозможно сделать видимым полосу прокрутки (Android)

У меня такая проблема – я хочу, чтобы полоса прокрутки прядилась всегда. Но для функции spinner

setScrollbarFadingEnabled(false); 

Вызывает сбои с помощью NullExceptionPointer во время рисования GUI.

Теги XML также не могут решить эту проблему – кажется, что счетчик просто игнорирует их.

Может быть, есть еще один способ двигаться? Например, используя пользовательскую полосу прокрутки? Если да, как я могу это сделать?

Спасибо за ваши ответы, Дмитрий.

Как я уже спросил, вот сообщение об ошибке LogCat для простого проекта с помощью всего лишь счетчика:

 AndroidRuntime(2252): FATAL EXCEPTION: main AndroidRuntime(2252): java.lang.NullPointerException AndroidRuntime(2252): at android.view.View.onDrawScrollBars(View.java:5836) AndroidRuntime(2252): at android.view.View.draw(View.java:6799) AndroidRuntime(2252): at android.view.ViewGroup.drawChild(ViewGroup.java:1640) AndroidRuntime(2252): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) AndroidRuntime(2252): at android.view.ViewGroup.drawChild(ViewGroup.java:1638) AndroidRuntime(2252): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) AndroidRuntime(2252): at android.view.View.draw(View.java:6796) AndroidRuntime(2252): at android.widget.FrameLayout.draw(FrameLayout.java:352) AndroidRuntime(2252): at android.view.ViewGroup.drawChild(ViewGroup.java:1640) AndroidRuntime(2252): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) AndroidRuntime(2252): at android.view.ViewGroup.drawChild(ViewGroup.java:1638) AndroidRuntime(2252): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) AndroidRuntime(2252): at android.view.View.draw(View.java:6796) AndroidRuntime(2252): at android.widget.FrameLayout.draw(FrameLayout.java:352) AndroidRuntime(2252): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2078) AndroidRuntime(2252): at android.view.ViewRoot.draw(ViewRoot.java:1433) AndroidRuntime(2252): at android.view.ViewRoot.performTraversals(ViewRoot.java:1175) AndroidRuntime(2252): at android.view.ViewRoot.handleMessage(ViewRoot.java:1753) AndroidRuntime(2252): at android.os.Handler.dispatchMessage(Handler.java:99) AndroidRuntime(2252): at android.os.Looper.loop(Looper.java:123) AndroidRuntime(2252): at android.app.ActivityThread.main(ActivityThread.java:4632) AndroidRuntime(2252): at java.lang.reflect.Method.invokeNative(Native Method) AndroidRuntime(2252): at java.lang.reflect.Method.invoke(Method.java:521) AndroidRuntime(2252): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) AndroidRuntime(2252): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) AndroidRuntime(2252): at dalvik.system.NativeStart.main(Native Method) 

У Spinner нет полосы прокрутки, поэтому вы получаете NullPointerException.

Всплывающее окно, показанное spinner, имеет полосу прокрутки. Поэтому вам нужно изменить свойства ListView, показанные spinner. Но сам ListView не раскрывается Spinner любыми общедоступными методами.

Даже если вы получаете ListPopupWindow путем отражения, возникает еще одна проблема, что ListView ListPopupWindow создается только после нажатия кнопки Spinner.

Но OnClickListener из Spinner не может быть зарегистрирован, чтобы установить свойства ListView после шоу.

Вы можете создать Custom Spinner с переопределенным параметром performClick, а затем получить mPopup путем отражения. И используйте mPopup.getListView().setScrollbarFadingEnabled(false)

Но если вы собираетесь создать собственный Spinner, я считаю, что проще реализовать все всплывающее окно в соответствии с вашими потребностями, чем использовать рефлексию.

После первоначального исследования, я думаю, что невозможно вызвать setScrollbarFadingEnabled(false); В Spinner.

Я прочитал реализацию класса View.java и View.java (этот последний реализует setScrollbarFadingEnabled(boolean) API16, и проблема заключается в строке:

 cache.scrollBar.setAlpha(255); 

Вероятно, cache.scrollBar имеет значение null в этот момент, и я не нашел способа принудительно инициализировать этот атрибут.

Большинство методов, управляющих этим атрибутом, защищены или закрыты, поэтому мы не можем просто называть их.

Я продолжу исследовать эту проблему, чтобы найти возможное решение, но пока, и учитывая, что никто еще не ответил на этот вопрос, я думаю, что это невозможно.