Android的activity的监听页面所有事件问题

本文分享了一种在Android开发中高效更新大量控件状态的方法,通过重写Activity的dispatchTouchEvent方法,监听手指抬起事件,统一检查所有TextView、EditText等控件的输入状态,从而动态调整关联按钮的可点击状态,减少了代码冗余,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中很容易遇到 不同类型控件输入表单 根据表单的是否输入了内容来判断显示 关联按钮的状态变化 在数量少的情况可以对每一个控件监听并筛选条件满足更新 但是对数量很多 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;
                }
            }
        }
}

注: 这里是我对手指抬起监听 不影响使用,如果有更好的方法请写留言 不胜感激!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值