2011-08-04 14 views
14

Moja aplikacja wykorzystuje sterowanie za pomocą klawiatury i podczas poruszania się zauważyłem, że czasami otrzymujesz to, co określam jako "Widok tajemnicy" - mówię to, ponieważ nic nie jest widoczne wydaje się być wybrane, ale nic nie jest widoczne alboJak mogę się dowiedzieć, który widok jest aktualnie skupiony?

Czy jest jakiś sposób, aby dowiedzieć się, na czym się skupiam w danym momencie? na przykład. słuchacz, który wystrzeliwuje na wybór widoku, itp

Dzięki

** edit - niektóre kod ntc **

LinearLayout col1 = (LinearLayout)findViewById(R.id.col1); 
Button btn = new Button(this); 
btn.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     LinearLayout col1 = (LinearLayout)findViewById(R.id.col1); 
     if(col1.getFocusedChild() != null) { 
      Log.d(TAG, col1.getFocusedChild().toString()); 
     } 
    } 
}); 
col1.addChild(btn); 

Odpowiedz

24
getWindow().getCurrentFocus(); 
+1

To nie działa dla mnie ..? "getWindow(). getCurrentFocus()" zawsze zwraca wartość null. –

1

Prawdopodobnie można użyć tej metody dla każdego widoku. Może to maja robi się coraz większy i denerwująca, ale z pewnością działa:

if(yourChildView.isFocused()) { 
     yourChildView.setFocusable(false); 
} 
+0

dam tego spróbować pierwszą rzeczą. Jest tylko 5 rodziców do wyboru, więc spróbuję ich wszystkich! Dzięki. – Jacksonkr

+0

Obecnie mój kontener to LinearLayout, a "getFocusedChild" wraca jako null, nawet jeśli dodaję dziennik do detektora onclick. Wysłałem kilka przykładowych kodów w edycji do mojego oryginału. – Jacksonkr

+0

Dobrze, że twój przycisk jest skupiony .. więc Twój układ liniowy nie zostanie wyostrzony .. w ten sposób zwróci wartość null .... powiedz mi o twoim aktualnym celu, abym mógł pomóc .. – ngesh

Powiązane problemy