Android开发:Button获取焦点
Button默认是无法获取焦点的,通过添加如下属性可以时Button获取焦点:
android:focusable="true"
android:focusableInTouchMode="true"
不过这样会带来一个问题,就是在第一次点击Button时,Button获得焦点,但是不响应点击事件,第二次点击时响应点击事件。
解决需要两次点击Button,才能响应的问题就是在为Button设置焦点监听器,并在监听器中响应与Button的点击事件,如下:
camera.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus){
Intent it = new Intent(TaskOperationActivity.this, ImageReportActivity.class);
it.putExtra("taskID", task.getId());
it.putExtra("serialNo", camera.getTag().toString());
for(int i = 0; i < elementImages.size(); i++){
if(elementImages.get(i).getSerialNo().equals(camera.getTag().toString())){
Bundle bd = new Bundle();
bd.putSerializable("elementValue", elementImages.get(i));
LoggerUtils.d("图片元素:", elements.get(i).toString());
it.putExtra("bd", bd);
break;
}
}
startActivityForResult(it, MORE_PICTURE);
}
}
});
camera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent it = new Intent(TaskOperationActivity.this, ImageReportActivity.class);
it.putExtra("taskID", task.getId());
it.putExtra("serialNo", camera.getTag().toString());
for(int i = 0; i < elementImages.size(); i++){
if(elementImages.get(i).getSerialNo().equals(camera.getTag().toString())){
Bundle bd = new Bundle();
bd.putSerializable("elementValue", elementImages.get(i));
LoggerUtils.d("图片元素:", elements.get(i).toString());
it.putExtra("bd", bd);
break;
}
}
startActivityForResult(it, MORE_PICTURE);
}
});
更多相关文章
- Android(安卓)定时让popupwindow消失
- 【Android】悬浮按钮(FloatingActionButton)
- (转)EditText 焦点控制,进入界面时不弹出键盘
- Android侧滑菜单之DrawerLayout用法详解
- Android的Button属性使用
- 列表中焦点处理
- Android(安卓)WiFi ADB
- 使用响应式编程(RxJava)开发Android(安卓)App
- 软件安装:android studio安装以及操作手册