Android List item中EditText 第一次点击无效,第二次点击响应事件监听的解决

Android List item中EditText 第一次点击无效,第二次点击响应事件监听的解决

先说结构,我是在RecyclerView套入了EditText
这是Item结构:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="150dp"
    android:layout_height="40dp"
    tools:context=".FileActivity"
    android:orientation="horizontal"
    android:id="@+id/item_view">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_weight="3"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/data_number"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/xui_btn_gray_select_color"
                android:gravity="center"
                android:textColor="@color/xui_config_color_white"
                android:textSize="20dp"
                android:textStyle="bold"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/edit_view"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <EditText
                android:id="@+id/data_edit"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:background="@null"
                android:focusableInTouchMode="false"
                android:cursorVisible="true"
                android:inputType="numberDecimal"/>

            <TextView
                android:id="@+id/qr_data_id"
                android:layout_width="0dp"
                android:layout_height="0dp" />

        </LinearLayout>
</LinearLayout>

根据需要,edit要使用横向的数字键盘输入数字内容。于是就必须使用自定义键盘输入。
实际测试中发现,当我第一次点击edit时不会触发item子view点击事件,导致不能给自定义键盘设置到参数,就不能输入数字,当第二次点击时才会触发点击事件。一开始是想会不会是我用这一句,

getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); //不弹出输入法

不让系统键盘弹出来,导致系统键盘只是隐藏第一次点击事件被系统键盘消费了。
后来发现并不是,最终原因是在item的EditText中设置了

android:focusableInTouchMode="false"

这个属性,意思是“是不是需要点击来获取焦点”,我设置为了true,因此第一次点击只是获取到焦点,然后才触发事件。小小一句坑了我两天时间,下次得注意啊!

最后给安利一下开源的RecyclerView的Adapter项目BaseRecyclerViewAdapterHelper很好用,推荐给大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值