今天解决了一个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. 浅谈Java中Collections.sort对List排序的两种方法
  2. mybatisplus的坑 insert标签insert into select无参数问题的解决
  3. Python list sort方法的具体使用
  4. python list.sort()根据多个关键字排序的方法实现
  5. Android禁止横竖屏和解决切换屏幕时重启Activity的方法
  6. Android(安卓)启动Activity面流程(Android(安卓)9.0)
  7. libevent 在 Android(安卓)上的一个改进
  8. Android(安卓)开发中使用SQLite 数据库
  9. android 关于Dialog 圆角的问题

随机推荐

  1. Activity切换动画无效(android:windowIsT
  2. android去除Spinner的分割线
  3. Android——拖动条SeekBar
  4. android ScrollView 充满屏幕
  5. android selector的使用
  6. Theme.Holo.Light详解
  7. android中View.measure方法详解
  8. Android(安卓)build/envsetup.sh 脚本分
  9. Android(安卓)SDK下载和更新失败的解决方
  10. Beginning Android(安卓)4--Exercises 1