今天解决了一个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上一些方法的区别和用法的注意事项
  6. android实现字体闪烁动画的方法
  7. Android中dispatchDraw分析
  8. 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
  9. Android四大基本组件介绍与生命周期

随机推荐

  1. android 发送邮件
  2. Android零碎知识点(6)——下拉列表框Spinne
  3. android中用Spannable在TextView中设置超
  4. android中使用定时任务
  5. Win7上Git安装及简单配置过程
  6. Android(安卓)复习 Content Provider
  7. Android--(6)--详解ImageButton属性
  8. 关于Android中Toast使用小结
  9. 申请 Android(安卓)MapView 的apiKey流程
  10. Android下获取开机时间