EditText默认不获取焦点,隐藏软键盘,焦点监听,输入监听,样式设置

本文介绍了在Android应用中如何控制EditText组件的行为,包括如何设置EditText的焦点使其默认不弹出软键盘,如何通过XML属性调整Activity以适应软键盘的弹出,以及如何监听EditText的焦点变化和输入变化。

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

EditText可输入,但页面进来的时候默认不获取焦点,并不弹出软键盘。

手动点击的时候EditText获取焦点,弹出软键盘,但不把底部的布局顶上来。


1.在manifest中给Activity添加windowSoftInputMode属性

<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateUnspecified|adjustResize|stateHidden|adjustPan">
</activity>

stateUnspecified:软键盘默认的设置

adjustResize:当前Activity自动调整屏幕大小留出软键盘的空间

stateHidden:当前Activity隐藏软键盘

adjustPan:如果EditText被软键盘覆盖了一半,当此EditText获取焦点的时候,当前Activity会自动调整让EditText完全显示,避免被软键盘遮挡


2.在EditText布局之前加上一个空布局,并requestFocus,相当于是把焦点抢了,这样EditText就获取不到焦点了

布局:

<LinearLayout
                        android:id="@+id/getfocus"
                        android:layout_width="0px"
                        android:layout_height="0px"
                        android:focusable="true"
                        android:focusableInTouchMode="true"
                        android:orientation="horizontal">

                        <requestFocus />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/et_tel"
                        style="@style/styleEditText"
                        android:hint="请输入手机号"
                        android:inputType="number" />


3.主动获取焦点弹出软键盘

<activity android:name=".activity.SearchActivity"
                  android:windowSoftInputMode="stateVisible"/>


4.EditText焦点监听

EditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {  
      
    @Override  
    public void onFocusChange(View v, boolean hasFocus) {  
        if(hasFocus){//获得焦点  
              
        }else{//失去焦点  
 
        }  
    }             
});

5.EditText输入监听

EditText.addTextChangedListeneer(new TextWatcher){
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
//EditText改变之前
 } 
@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) {
//改变中
 } 
@Override 
public void afterTextChanged(Editable s) {
//改变后
 }
 });


6.样式设置

去掉下划线 android:background="@null"

然后加上.9的圆角图或shape,写一个selector,选中加上颜色

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:drawable="@drawable/edittext_normal" />
<item android:state_focused="true" android:drawable="@drawable/edittext_focused" />
</selector>


7.禁止输入

mEditText.setKeyListener(null);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值