Android焦点问题

1,528 阅读1分钟

1.控件主动获取焦点 

   主要有三个方法: 

     setFocusable(true); // 是设置能否获得焦点而已 

     requestFocus(); //是让控件得到焦点 

     requestFocusInWindow() //的作用应该是获取窗口的焦点

  为控件设置这三个属性,就能让当前的焦点落在控件上。目前在项目中解决的问题为:在ScrollView中嵌套WebView+ListView,当屏幕弹起软键盘时,软键盘收回ScrollVie会自动滚动到WebView的底部,这时可以在软键盘弹起时将屏幕的焦点交给ListView,这样就不会滚动了。

2.控件中子控件获取焦点

  通常是指的是descendantFocusability这个属性,该属性有三个值:

 beforeDescendants:viewgroup会优先其子类控件而获取到焦点
 afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
 blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

平常一般在根布局中加上android:descendantFocusability=”blocksDescendants”这个属性。

3.监听Activity焦点

@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
} 

通过上面的方法就可以监听到Activity的焦点变化啦!