关于android软键盘enter键的替换与事件监听

     EditText设置光标颜色    

android:textCursorDrawable="@null"

 

EditText设置光标位置问题                 EditText中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setSelection(0),结果发现在 三星P1000上面有问题。经过研究发现需要先调用EditText.requestFocus(),再调用setSelection(0)。否则的话,在2.x的机器上有问题,但3.x上面是好着的.。

 

EditText横屏时,弹出软件盘时不进行全屏 在使用EditText进行文本输入时,若不进行特殊的设置,使用Android自带的软键盘,该软键盘会占用整个界面,那么,如何让键盘只占用屏幕的一部分呢?

1. <EditText
2. android:id="@+id/text1"
3. android:layout_width="150dip"
4. android:layout_height="wrap_content"
5. android:imeOptions="flagNoExtractUi"/>

          软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,actionGo,actionSearch,actionSend,actionNext,actionDone,例如当值为actionNext时enter键外观变成一个向下箭头,而值为actionDone时enter键外观则变成了“完成”两个字。 我们也可以重写enter的事件,方法如下:

1. TextView editText = new TextView(this);  editText.setOnEditorActionListene(

1. newTextView.OnEditorActionListener() {     
2.  public boolean onEditorAction(TextView v, int
3.                             KeyEvent event){     
4. if
5.                         {     
6. // 在这里编写自己想要实现的功能   
7.                         }     
8. return false;     
9.           }     
10. });

            android:imeOptions="flagNoExtractUi"  //使软键盘不全屏显示,只占用一部分屏幕 同时,这个属性还能控件软键盘右下角按键的roid:imeOptions="actionNone"  //输入框右侧不带任何提示

android:imeOptions="actionGo"    //右下角按键内容为'开始'
              android:imeOptions="actionSearch"  //右下角按键为放大镜图片,搜索
                android:imeOptions="actionSend"    //右下角按键内容为'发送'
                 android:imeOptions="actionNext"   //右下角按键内容为'下一步'
                    android:imeOptions="actionDone"  //右下角按键内容为'完成'

         android:lines感觉是用于显示文字的行数,事实上是不确切的。假如文字不满足够的行数呢?

        android:lines更适合用于设置TextView的高度,像上面的代码指定了TextView的高度可以显示4行文字,如果文字不满4行,则TextView仍旧显示4行的高度!         android:ellipsize用于当文字过长时缩略显示,默认会缩略显示2行!如果和android:singleLine="true"一起使用则显示一行;

 

 

android:lines感觉是用于显示文字的行数,事实上是不确切的。假如文字不满足够的行数呢?android:lines更适合用于设置TextView的高度,像上面的代码指定了TextView的高度可以显示4行文字,如果文字不满4行,则TextView仍旧显示4行的高度! android:ellipsize用于当文字过长时缩略显示,默认会缩略显示2行!如果和android:singleLine="true"一起使用则显示一行;