在项目中很容易遇到 不同类型控件输入表单 根据表单的是否输入了内容来判断显示 关联按钮的状态变化 在数量少的情况可以对每一个控件监听并筛选条件满足更新 但是对数量很多 TextView EditText等都有的情况下 会增加代码量 ,我目前是 重写activity的dispatchTouchEvent 方法(按需求处理) 根据事件行为处理 刷新调用根布局控件 根据getChildCount方法数量 取出view 类型 (按需求的view)的内容情况 条件判断 以下是我简单测试
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_UP:
LogUtil.e(TAG, "收支抬起了更改");
updateBtStyle();
break;
}
return super.dispatchTouchEvent(ev);
}
private void updateBtStyle() {
isEmpty = false;
for (int i = 0; i < mRootLL.getChildCount(); i++) {
mRootLL.getChildAt(i).setClickable(false);
View view = mRootLL.getChildAt(i);
if (view instanceof TextView) {
if (TextUtils.isEmpty(((TextView) view).getText().toString().trim())) {
isEmpty = true;
break;
}
}
}
}
注: 这里是我对手指抬起监听 不影响使用,如果有更好的方法请写留言 不胜感激!!!