EditText



关于键盘弹出挡住输入框的问题

android:windowSoftInputMode 使用这个属性可以完美解决。
这个属性的设置将会影响两件事情:
  1. 当有焦点产生时,软键盘是隐藏还是显示
  2. 是否减少活动主窗口大小以便腾出空间放软键盘
这个属性可以设一个值,或者设两个值(用竖线隔开)。
例如: <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
各个值的含义:
  • stateUnspecified:默认设置,软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
  • stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
  • stateHidden:用户选择activity时,软键盘总是被隐藏(这里的用户选择是指用户导航到此activity,而不是返回到次activity)
  • stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的(这里的获取焦点包括上面的导航和返回)
  • stateVisible:和stateHidden相反
  • stateAlwaysVisible:和stateAlwaysHidden相反
  • adjustUnspecified:默认设置,没有指定,通常由系统自行决定
  • adjustResize:会调整活动主窗口大小以便腾出空间放软键盘
  • adjustPan:会调整活动主窗口大小以便腾出空间放软键盘。和adjustResize的区别是:adjustResize调整后,其他的控件仍然可以操作(好像如果是ScrollView的话,必须手动滑才能看到其他控件);而adjustPan调整后其他控件必须在关闭软键盘后才能操作。所以,adjustPan是不被推荐的属性。

点击EditText的以外的区域关闭软键盘

方法1:給最最最外层的父Layout设置点击事件
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  2.     android:id="@+id/rootview"    
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"    
  5.     android:background="@color/white"    
  6.     android:clickable="true"    
  7.     android:gravity="center_horizontal"    
  8.     android:orientation="vertical" >    
  9.     
  10. </LinearLayout>   
加上id和android:clickable=“true”
然后,设置点击事件
  1. @Override    
  2. public void onClick(View v) {    
  3.     switch (v.getId()) {    
  4.     case R.id.rootview:    
  5.          InputMethodManager imm = (InputMethodManager)    
  6.          getSystemService(Context.INPUT_METHOD_SERVICE);    
  7.          imm.hideSoftInputFromWindow(v.getWindowToken(), 0);    
  8.         break;    
  9.     }    
  10. }    

方法2:dispatchTouchEvent方法中,每次ACTION_DOWN的时候,判断是不是EditText区域,如果不是,关闭软键盘
  1. @Override    
  2. public boolean dispatchTouchEvent(MotionEvent ev) {    
  3.     if (ev.getAction() == MotionEvent.ACTION_DOWN) {    
  4.         View v = getCurrentFocus();    
  5.         if (isShouldHideInput(v, ev)) {    
  6.     
  7.             InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);    
  8.             if (imm != null) {    
  9.                 imm.hideSoftInputFromWindow(v.getWindowToken(), 0);    
  10.             }    
  11.         }    
  12.         return super.dispatchTouchEvent(ev);    
  13.     }    
  14.     // 必不可少,否则所有的组件都不会有TouchEvent了    
  15.     if (getWindow().superDispatchTouchEvent(ev)) {    
  16.         return true;    
  17.     }    
  18.     return onTouchEvent(ev);    
  19. }  
  20.   
  21. public  boolean isShouldHideInput(View v, MotionEvent event) {    
  22.     if (v != null && (v instanceof EditText)) {    
  23.         int[] leftTop = { 00 };    
  24.         //获取输入框当前的location位置    
  25.         v.getLocationInWindow(leftTop);    
  26.         int left = leftTop[0];    
  27.         int top = leftTop[1];    
  28.         int bottom = top + v.getHeight();    
  29.         int right = left + v.getWidth();    
  30.         if (event.getX() > left && event.getX() < right    
  31.                 && event.getY() > top && event.getY() < bottom) {    
  32.             // 点击的是输入框区域,保留点击EditText的事件    
  33.             return false;    
  34.         } else {    
  35.             return true;    
  36.         }    
  37.     }    
  38.     return false;    
  39. }  


改变光标的颜色

android:textCursorDrawable="@null"   设成和文字一样的颜色
改变为其他颜色:
android:textCursorDrawable="@drawable/edittext_cursor"
edittext_cursor.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <size android:width="2dp" />  
  5.   
  6.     <solid android:color="#BDC7D8" />  
  7.   
  8. </shape>  
阅读更多
个人分类: Android_UI基础
想对作者说点什么? 我来说一句

EditText添加图片SmiliesEditText.zip

2013年01月18日 56KB 下载

按回车键显示EditText

2015年01月04日 54KB 下载

EditText焦点的自动跳转

2015年07月01日 2.03MB 下载

EditText中插入图片

2012年02月12日 79KB 下载

带删除按钮的EditText

2015年11月19日 4KB 下载

圆角listview

2013年06月29日 785KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭