需求:希望点击linearlayout之后能够获取焦点,并响应点击事件。
一开始只对linearlayout设置了onclicklistenner,这样发现虽然能够响应点击事件,但是不能获取焦点。
修改:对linearlayout的布局文件中增加了
android:focusableInTouchMode="true"
结果:可以获取焦点,但是需要第二次点击才能响应点击事件。因为第一次点击先获取焦点,获取焦点后的点击动作才能响应点击事件。
修改:将处理事件从onClickListener修改到onFocusChange中,删除setOnclickListener方法。
mLinearLayout.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override public void onFocusChange (View v, boolean hasFocus) {
if (hasFocus) {
//do something
}
}
}
});
结果:不能获取焦点,不能响应事件
修改:增加setOnclickListener方法,但不做任何处理。
结果:可以获取焦点,可以响应事件。
原因:参见