今天解决了一个Android平台下的焦点问题。发现其中关键问题的所在是Android的touchMode。从JavaSwing平台过来的人,都会关注setFocusable()和requestFocus()方法,但是在Android的View中还有另外的两个个方法,setFocusableInTouchMode()和requestFocusFromTouch()方法。这个两个方法就是解决Android上的焦点获取问题的关键。

同时在View类中,还有一个isInTouchMode(),可以帮助我们在监听Focuse事件时判断是否执行click(). 代码如下:

ImageButton.OnFocusChangeListener mFocusChangeListener = new ImageButton.OnFocusChangeListener(){

public void onFocusChange(View v, boolean hasFocus) {
Log.d("FocuseChange", "Focuse has changed.");
if (hasFocus) {

// 如果是touchmode就执行click,否则就会只是选中。
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.));

if (v.isInTouchMode()){

((ImageButton)v).performClick();
}

} else {
v.setBackgroundDrawable(getResources().getDrawable(R.));
v.getBackground().setAlpha(100);
}

}
};

更多相关文章

  1. Android禁止横竖屏和解决切换屏幕时重启Activity的方法
  2. Android官方DrawerLayout 抽屉式侧滑菜单-简单使用方法
  3. Android Emulator 模拟器使用方法
  4. Android心得4.3--SQLite数据库--execSQL()和rawQuery()方法
  5. Android之ContextMenu的使用方法以及与OptionMenu的区别
  6. Android 摇一摇太灵敏的解决方法
  7. Android加载Html的方法

随机推荐

  1. Android Studio 布局属性笔记
  2. Android控件笔记——在界面中显示及输入
  3. Android 常用开发工具以及Mac常用软件
  4. 自定义动画(animation)时set中的各元素效
  5. 相对布局相关属性
  6. [Android 博客]收集一些不错的,关于androi
  7. android应用自定义字体
  8. Android 控件使用参数集锦
  9. Android架构组件-Lifecycle
  10. Android API中文文档Button