2013-08-05 49 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

这不会做,因为有几个按钮,可以采取焦点。我只想让第一个按钮从焦点开始。我想我可以将焦点存储在一个变量中,并覆盖所有可能改变焦点的键的输入键和所有按键。必须有更好的方式来处理焦点。 –