其他分享
首页 > 其他分享> > EditText显示光标的同时不自动获取焦点弹出软键盘,点击父布局显示小键盘,点击其他地方隐藏小键盘

EditText显示光标的同时不自动获取焦点弹出软键盘,点击父布局显示小键盘,点击其他地方隐藏小键盘

作者:互联网

 <LinearLayout
                android:id="@+id/ll_nickName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="17dp"
                android:background="@drawable/bg_nickname_bt"
                android:gravity="center_vertical"
                android:minWidth="236dp"
                android:minHeight="57dp"
                android:orientation="horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="28dp"
                    android:text="@string/nickname"
                    android:textColor="#808C60F3"
                    android:textSize="17sp"
                    android:textStyle="bold" />


                <EditText
                    android:id="@+id/et_nickName"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@null"
                    android:singleLine="true"
                    android:maxLines="1"
                    android:maxLength="30"
                    android:cursorVisible="true"
                    android:ellipsize="end"
                    android:layout_marginEnd="10dp"
                    android:layout_marginStart="17dp"
                    android:textColor="#8C60F3"
                    android:textSize="17sp"
                    android:textStyle="bold" />

            </LinearLayout>
        binding.etNickName.requestFocus();
        binding.llContent.setOnClickListener(v->{
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(binding.etNickName.getWindowToken(), 0);
        });
        binding.llNickName.setOnClickListener(v->{
            binding.etNickName.requestFocus();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(binding.etNickName, InputMethodManager.SHOW_FORCED);
        });
<activity android:name=".activity.SignUpActivity" android:screenOrientation="portrait" android:windowSoftInputMode="stateAlwaysHidden"/>

1.显示光标的同时不自动获取焦点弹出键盘

首先在Manifest文件中所在的activty节点上加android:windowSoftInputMode="stateAlwaysHidden"这条属性

然后在布局文件中的EditText加上

android:cursorVisible="true"

然后在初始化代码中加上

editText.requestFocus();

2.如何在点击父布局的时候显示小键盘,(想把点击区域扩大好交互),点击其他区域隐藏小键盘(为了优化用户体验)

binding.llContent.setOnClickListener(v->{
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(binding.etNickName.getWindowToken(), 0);
});
binding.llNickName.setOnClickListener(v->{
    binding.etNickName.requestFocus();
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(binding.etNickName, InputMethodManager.SHOW_FORCED);
});

llContent是整个布局文件的父布局的id

llNickName是EditeText的父布局这样设置点击区域就扩大了好交互

标签:EditText,binding,点击,InputMethodManager,小键盘,etNickName,imm
来源: https://blog.csdn.net/m0_37707561/article/details/120275789