2013-08-05 125 views
5

如何將焦點設置爲按鈕,但沒有將setFocusableInTouchMode設置爲true?將焦點設置爲按鈕

我第一次嘗試這樣的:

button.requestFocus(); 

這根本不起作用。然後我試了這個:

button.setFocusableInTouchMode(true); 
button.requestFocus(); 

問題是,它突出顯示按鈕。我不希望按鈕在觸摸模式下突出顯示。我只是想在用戶點擊輸入鍵或製表鍵時選擇按鈕。

爲了澄清,我只是想讓第一個按鈕在非觸摸模式下以焦點開始。

回答

0

這完美地解決了這個問題:

layout.getViewTreeObserver().addOnTouchModeChangeListener(new ViewTreeObserver.OnTouchModeChangeListener() 
{ 
    public void onTouchModeChanged(boolean isInTouchMode) 
    { 
     if (!isInTouchMode) 
      button.requestFocus(); 
    } 
}); 
1

我猜,你想這樣的:

button.setOnKeyListener(new OnKeyListener() { 

      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       switch (keyCode) { 
       case KeyEvent.KEYCODE_ENTER: 
        // HIT THE ENTER KEY 
        break; 
       case KeyEvent.KEYCODE_TAB: 
        // HIT THE TAB KEY 
        break; 
       } 
       return false; 
      } 
     }); 

,如果你不想這樣,你能清楚?對不起我的英語不好。

+0

這不會做,因爲有幾個按鈕,可以採取焦點。我只想讓第一個按鈕從焦點開始。我想我可以將焦點存儲在一個變量中,並覆蓋所有可能改變焦點的鍵的輸入鍵和所有按鍵。必須有更好的方式來處理焦點。 –