android RecyclerView 里面嵌套editText,点击RecyclerView内部其他控件让editText失去焦点

2023-05-24 17:39:56 浏览数 (3)

有很多方法,没详细去尝试,而我的方法是在每个item添加一个hideKeyboard,hideKeyboard是自定义方法,此方法写在activity中

代码语言:java复制
public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

适配器引用的xml的根节点写入android:onClick="hideKeyboard"(如果想要触发onclick最好不要在根节点添加外间距,可以包多一层写内间距)

代码语言:html复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@ id/layout_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorWhite"
    android:orientation="vertical"
    android:paddingVertical="@dimen/dp_16"
    android:layout_marginBottom="@dimen/dp_6"
    android:onClick="hideKeyboard">
    
    <EditText
        android:id="@ id/edit_count"
        android:layout_width="@dimen/dp_84"
        android:layout_height="@dimen/dp_35"
        android:layout_marginStart="@dimen/dp_10"
        android:background="@drawable/round_edit_text_gray_bg"
        android:inputType="number"
        android:text="0"
        android:textAlignment="center" />
        
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginStart="@dimen/dp_10"
        android:text="现库存:"
        android:textSize="@dimen/font_small" />
        
    <TextView
        android:id="@ id/current_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="10"
        android:textSize="@dimen/font_small" />
    
</LinearLayout>

<font color=red>注意:内部其他控件添加android:clickable="true",父级点击事件会失效</font>

0 人点赞