2012-03-17 1 views
15

Istnieje sporo postów dotykających tego tematu. Pomyślałem, że powinienem zadać to proste pytanie, mając nadzieję, że to wyjaśnię.W jaki sposób przycisk może uzyskać ostrość?

Nie mogę uzyskać ustawienia fokusa na przycisku. Wiem, że prawdopodobnie brakuje mi czegoś fundamentalnego. Oto prosty układ:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:focusable="true" /> 

</LinearLayout> 

Poniżej znajduje się prosty kod w onCreate():

 Button button = (Button)findViewById(R.id.button1); 
     button.setFocusable(true); 
     button.requestFocus(); 
     button.setText("Debug"); //Just to show the code here has been executed 

To po prostu nie działa (tzn przycisk nie uzyskać ostrość).

Każda korekta mojego błędu lub nieporozumienia zostanie bardzo doceniona.

Odpowiedz

34

zmiana kodu:

 Button button = (Button)findViewById(R.id.button1); 
     button.setFocusable(true); 
     button.setFocusableInTouchMode(true);///add this line 
     button.requestFocus(); 
     button.setText("Debug"); 
+1

Przycisk będzie mieć Skupienie inaczej też, ale go nie zobaczymy. Wizualne ogniskowanie jest tylko w trybie [TouchMode] (http://android-developers.blogspot.de/2008/12/touch-mode.html) – zapl

+0

Dziękuję wszystkim za szybką odpowiedź i wyjaśnienie. Najwyraźniej nie rozumiałem, co oznacza "koncentracja" w danym kontekście. Teraz zastanawiam się, jakie narzędzie ma przycisk, który pozwala uzyskać ostrość bez pokazywania go. – Hong

+1

Powiedz, że masz podłączoną do urządzenia klawiaturę (taką jak emulator) lub masz urządzenie z d-padem i wciskasz touchpad. Cokolwiek się teraz skupia, teraz się nazywa. Jeśli po prostu używasz aplikacji palcami, zwykle możesz po prostu zignorować ostrość. – zapl