Kann das nicht die spinner die Bildlaufleiste immer sichtbar (Android)
Ich habe so ein problem - ich will die spinner die Bildlaufleiste immer sichtbar.
Aber für die spinner-Funktion
setScrollbarFadingEnabled(false);
verursacht Absturz mit einem NullExceptionPointer beim zeichnen der GUI.
XML-tags nicht lösen können dieses problem auch - es scheint, dass die spinner einfach ignorieren.
Vielleicht gibt es andere Möglichkeiten, sich zu bewegen? Zum Beispiel mit der custom scrollbar? Wenn ja, wie kann ich dies tun?
Dank für Eure Antworten,
Dmitrij.
Als ich gefragt worden, hier ist der LogCat Fehlermeldung für einfaches Projekt mit nur ein spinner, in:
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)
- Können wir sehen, einige LogCat? Danke.
- passiert das auf allen api-levels?
- Ich weiß sicher, dass das passiert, da API-15. Nicht sicher, über kleinere Stufen.
InformationsquelleAutor Dmitry | 2012-04-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spinner nicht haben eine Bildlaufleiste, Damit Sie immer NullPointerException.
Popup angezeigt, indem der spinner hat eine scrollbar. So müssen Sie zum ändern der Eigenschaften des ListView gezeigt spinner. Aber ListView selbst nicht ausgesetzt Spinner von öffentlichen Methoden.
Sogar, wenn Sie die ListPopupWindow durch Reflexion, ein weiteres problem entsteht, dass ListPopupWindow die ListView wird nur erstellt, wenn Sie auf die Spinner.
Aber OnClickListener der Spinner kann nicht registriert werden , setzen das ListView-Eigenschaften nach der show.
Könnte Sie erstellen Sie eine Benutzerdefinierte Spinner mit performClick überschrieben und dann bekommen mPopup durch Reflexion. und verwenden
mPopup.getListView().setScrollbarFadingEnabled(false)
Aber Wenn Sie erstellen Sie eine benutzerdefinierte Spinner, ich glaube, es ist einfacher zu implementieren, die ganze popup, um Ihre Bedürfnisse anzupassen, als mit Reflexion.
Danke @nandeesh für seine/Ihre Antwort und auch @DEU.Fouad für seine/Ihre Antwort auf einer anderen Seite.
Nach einer ersten Untersuchung, ich denke, dass ist nicht möglich, den Anruf
setScrollbarFadingEnabled(false);
im ein Spinner.Habe ich gelesen, die Implementierung der Klasse
Spinner.java
undView.java
(dies setzt diesetScrollbarFadingEnabled(boolean)
des API16 und das problem ist die Zeile:Wahrscheinlich
cache.scrollBar
null ist an dieser Stelle, und ich habe nicht finden keine Weise zu zwingen, einige der Initialisierung für dieses Attribut.Den meisten Methoden, die Verwaltung dieses Attribut sind geschützt oder privat, so können wir nicht einfach rufen.
Werde ich weiterhin Forschung zu diesem problem, um zu finden, eine mögliche Lösung, aber für jetzt, und wenn man bedenkt, dass niemand diese Frage beantwortet haben, doch ich denke, dass ist nicht möglich.