(Należy pamiętać, że zachowanie opisane w tej kwestii pojawiły się tylko ze względu na coś innego pozornie niepowiązanych robiliśmy. Zobacz the accepted answer.)zmienić sposób SlidingDrawer odpowiada trackball lub kursor
Mamy aktywność Android z GridView
i SlidingDrawer
wewnątrz RelativeLayout
. Sposób, w jaki działanie to reaguje na trackball (lub klawisze kursora), jest raczej dziwny. Fokus zostanie przesunięty pomiędzy pozycjami w oknie GridView, ale gdy tylko kursor przesunie się w kierunku "out" w GridView. (na przykład, gdy u góry, w lewo, gdy znajduje się już na najbardziej wysuniętym w lewo przedmiocie) przesuwana szuflada otwiera się lub zamyka. W szczególności, fokus pozostaje na tym samym przedmiocie w GridView --- nie przesuwa się do przesuwanej szuflady.
Przy pomocy kulki jest to szczególnie okropne, ponieważ kręcenie kulki za Twoim prawdziwym celem spowoduje, że wysuwana szuflada będzie się wielokrotnie otwierać i zamykać.
Ustaliliśmy, że możemy całkowicie wyłączyć trackball przez przesłonięcie onTrackballEvent()
. Wolimy, aby trackball i kursor działały normalnie na GridView, ale nie powodują otwierania lub zamykania wysuwanej szuflady. Zasadniczo chcielibyśmy, aby trackball skupił się na różnych zawartości przesuwanej szuflady, gdy jest otwarta.
Jak?
Przydatne pomysły. Pomógł mi on zastąpić 'open()' w niestandardowym 'SlidingDrawer' i wysłać ślad stosu, który doprowadził do rozwiązania opisanego w zaakceptowanej odpowiedzi. –