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

举报
yechaoa 发表于 2022/05/31 00:22:33 2022/05/31
【摘要】 EditText可输入,但页面进来的时候默认不获取焦点,并不弹出软键盘。 手动点击的时候EditText获取焦点,弹出软键盘,但不把底部的布局顶上来。 1.在manifest中给Activity添加windowSoftInputMode属性 <activity android:name=".MainActivity" ...

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就获取不到焦点了

布局:


  
  1. <LinearLayout
  2. android:id="@+id/getfocus"
  3. android:layout_width="0px"
  4. android:layout_height="0px"
  5. android:focusable="true"
  6. android:focusableInTouchMode="true"
  7. android:orientation="horizontal">
  8. <requestFocus />
  9. </LinearLayout>
  10. <EditText
  11. android:id="@+id/et_tel"
  12. style="@style/styleEditText"
  13. android:hint="请输入手机号"
  14. android:inputType="number" />


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


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


4.EditText焦点监听


  
  1. EditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
  2. @Override
  3. public void onFocusChange(View v, boolean hasFocus) {
  4. if(hasFocus){//获得焦点
  5. }else{//失去焦点
  6. }
  7. }
  8. });

5.EditText输入监听


  
  1. EditText.addTextChangedListeneer(new TextWatcher){
  2. @Override
  3. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  4. //EditText改变之前
  5. }
  6. @Override
  7. public void onTextChanged(CharSequence s, int start, int before, int count) {
  8. //改变中
  9. }
  10. @Override
  11. public void afterTextChanged(Editable s) {
  12. //改变后
  13. }
  14. });


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);




文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/52963857

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200