Android的焦点(Focus)问题
今天解决了一个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);
}
}
};
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android上一些方法的区别和用法的注意事项
- android实现字体闪烁动画的方法
- Android中dispatchDraw分析
- 关于Android(安卓)Studio3.2新建项目Android(安卓)resource link
- Android四大基本组件介绍与生命周期