■EditText编辑框

1.概述:可编辑的文本框。

2.颜色背景:
         (1)要去掉默认背景:(设置背景)
                 方法一:设置新的背景,android:background="#00000000"
                 方法二:设置背景为空,android:background="@null"
         (2)提示信息文字的颜色:
                  android:textColorHint="#ffff00" // 默认为灰色
         (3)被选中文字的底色:
                  android:textColorHighlight="#cccccc" // 默认为蓝色
3.光标:
          (1)默认有光标,有时只是光标颜色跟背景颜色一样而“被隐蔽了”。
          (2)光标可改为图标:属性textCursorDrawable。
          (3)将光标移到文本的末端:
                           方法一:
                                        1)et.setText(text);
                                        // 在当前界面所有EditText设置默认文本(或获取焦点)之后调用
                                        2)et.requestFocus();
                           方法二:
                                        1)et.setText(text); 
                                        2)et.setSelection(text.length());)
          (4)让光标移到点击的位置:
                    etInput.requestFocusFromTouch();
          (5)隐藏光标:
                  android:cursorVisible="false"

4.焦点:
         (1)同个界面中,唯一的EditText默认先自动获得焦点;
                 若同个界面中,有多个EditText,则默认第一个自动获得焦点。

         (2)强行获取焦点:

                 含有EditText的最先获得焦点,格式如下:

                        

                             

                       

                 注意:作为子标签(不是属性):
         (3)强行移除焦点:
                 方法一:在该EditText的父级控件或父控件中的另外一个控件,

                              也可以找父级控件外面的控件,

                              设置给该控件设置如下属性即可:

                                    android:focusable="true"  

                                    android:focusableInTouchMode="true"。

                方法二:在该EditText上方(同一个父控件内部)加个隐藏的LinearLayout。
                                                              android:layout_width="0px"
                                 android:layout_height="0px"
                                 android:focusable="true"
                                 android:focusableintouchmode="true">
                            

                             

5.输入类型的限定:

android:inputType :指定输入法的类型,用“|”选择多个。

6.控制软键盘:
(1)键盘若是开着则关闭;若是关着则弹出。
             控制代码如下:
             public class KeyBoardUtils{

                      private KeyBoardUtils() {}

                      /**键盘若是开着则关闭;若是关着则弹出*/

                      public static void colseInputMethod(Context context) {

                         InputMethodManager imm = (InputMethodManager) context

                            .getSystemService(Context.INPUT_METHOD_SERVICE);

                         if (imm.isActive()) {
                                 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
                                     InputMethodManager.HIDE_NOT_ALWAYS);
                         }
                     }
             }
            处理示例代码如下:
            tvNavSearch.setOnFocusChangeListener(new View.OnFocusChangeListener() {
               @Override
               public void onFocusChange(View v, boolean hasFocus) {
                   if (!hasFocus) {
                   KeyBoardUtils.colseInputMethod(NavMapAty.this);
                   }
               }

            });

(2)只会关闭软键盘。
             public class KeyBoardUtils{

                      private KeyBoardUtils() {}

              /**
               * 只会关闭软键盘
               * @param context 上下文
               * @param view    依附的view
               */
               public static void colseInputMethod(Context context, View view) {

                InputMethodManager imm = (InputMethodManager) context

                   .getSystemService(Context.INPUT_METHOD_SERVICE);

                if (imm.isActive()){

                 imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

                 }

               }

             }

        调用代码如下:

        KeyBoardUtils.colseInputMethod(thisAty,rvEdit);

(3)点击输入框外面位置即关闭键盘。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            View view = getCurrentFocus();
            // 调用方法判断是否需要隐藏键盘
            KeyBoardUtils.hideKeyboard(ev, view, AboutKeyBoardActivity.this);
            break;
        default:
            break;
    }
    return super.dispatchTouchEvent(ev);
}
/**
 * 根据传入控件的坐标和用户的焦点坐标,判断是否隐藏键盘。
 * 若点击的位置在控件外,则隐藏键盘;
 * 若点击的位置在控件内,则不隐藏键盘。
 *
 * @param view  控件view
 * @param event 焦点位置
 * @return 是否隐藏
 */
public static void hideKeyboard(MotionEvent event, View view, Activity activity) {
    try {
        if (view != null && view instanceof EditText) {
            int[] location = {0, 0};
            view.getLocationInWindow(location);
            int left = location[0], top = location[1], right = left
                    + view.getWidth(), bootom = top + view.getHeight();
            // 判断焦点位置坐标是否在空间内,如果位置在控件外,则隐藏键盘
            if (event.getRawX() < left || event.getRawX() > right
                    || event.getY() < top || event.getRawY() > bootom) {
                // 隐藏键盘
                IBinder token = view.getWindowToken();
                InputMethodManager inputMethodManager = (InputMethodManager) activity
                        .getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.hideSoftInputFromWindow(token,
                        InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

7.软键盘右下角(Enter键)的图标:

(1)键盘图标的显示:

android:imeOptions :指定输入法窗口中的回车键的功能图标。

可选值为normal,
actionUnspecified, // 未指定==》“回车”(EditorInfo.IME_ACTION_UNSPECIFIED)
actionNone,//没有动作==》“”(EditorInfo.IME_ACTION_NONE)
actionGo,//去往==》“去往/开始/前往”(EditorInfo.IME_ACTION_GO)
actionSearch,//搜索,“搜索图标/搜索”......
actionSend,//发送,“发送”......
actionNext,//下一个,“下一个”......
actionDone。//完成,“完成”......

方法一,Xml中:
设置下面两个属性中的一个即可使这个属性imeOptions生效:
1 将singleLine设置为true
2 将inputType设置为text
    android:id="@+id/editText"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:imeOptions="actionSearch"
    android:inputType="text"
    android:singleLine="true"
    />
方法二,Java中:
et.setImeOptions(EditorInfo.IME_ACTION_SEARCH);  
et.setInputType(EditorInfo.TYPE_CLASS_TEXT);  
et.setSingleLine(true);  

(2)键盘图标的监听:

在代码中用et.setOnEditorActionListener方法,比如搜索:

        et.setOnEditorActionListener(new OnEditorActionListener() {  
            @Override  
            public boolean onEditorAction(TextView v, int actionId,  
                    KeyEvent event) {  
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                    // 执行搜索任务
                }  
                return false;  
            }  
        });  




8.监听输入变化:
可应用于显隐清除图标和输入匹配。
/*
 * 搜索目的地(商家位置)时,监听搜素框文本变化,改变搜索按钮文本
 */
class searchTextWatcher implements TextWatcher {
 @Override

 public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        //text  输入框中改变前的字符串信息  
        //start 输入框中改变前的字符串的起始位置  
        //count 输入框中改变前后的字符串改变数量一般为0  
        //after 输入框中改变后的字符串与起始位置的偏移量  

 }
 @Override

 public void onTextChanged(CharSequence s, int start, int before, int count) {

        //text  输入框中改变后的字符串信息  
        //start 输入框中改变后的字符串的起始位置  
        //before 输入框中改变前的字符串的位置 默认为0  
        //count 输入框中改变后的一共输入字符串的数量  

 }
 @Override

 public void afterTextChanged(Editable edit ) {

        //edit  输入结束呈现在输入框中的信息  

if (edit .toString().isEmpty()) {
   tvNavSearchCancle.setText("取消"); // 这时也可以隐藏清空图标
  } else {
   tvNavSearchCancle.setText("搜索"); // 这时也可以显示清空图标
  }
 }
}

9.监听焦点变化:
可应用于确定输入完成或退出当前界面后执行某些动作。
et.setOnFocusChangeListener(
        new View.OnFocusChangeListener() {
         @Override
         public void onFocusChange(View view, boolean b) {
          if (!b) {
           // 失去焦点的操作
          }
         }
        });

10.动态限制显示或隐藏密码:
1).在xml设置:
            android:id="@+id/etPwd "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:password="true"/>
2).在Java设置:
// 设置为明文
etPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
// 设置为密文
etPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());

11.限制字数:
(1)在xml中,可这样:android:maxLength=180;
(2)在Java中,可这样:etInput.setFilters(new InputFilter[]{new InputFilter.LengthFilter(100)});

12.限定输入指定字符:
比如:只能输入“1234567890"和"/”。
    ......
    android:digits="1234567890/"
    ....../>

更多相关文章

  1. android layout以及一些常用的android控件属性
  2. Android 输入法键盘和activity页面遮挡问题解决
  3. Android 设置控件是否可见
  4. Android 软键盘 禁用回车功能或者换成搜索功能
  5. 安卓布局文件中控件的各种属性的含义
  6. Android中设置控件透明度的方法
  7. 如何让Android中的控件显示居中?
  8. 每周总结20130821——android控件的尺寸、http文件上传

随机推荐

  1. ubuntu android交叉编译c程序 ndk
  2. Android(安卓)Partitions Explained: boo
  3. Android(安卓)uses-permission权限
  4. Android电话录音
  5. Android简单的下拉刷新(谷歌官方)
  6. openGL 简单demo
  7. Android、iPhone手机刘海屏适配判断
  8. Android(安卓)长按setOnItemLongClickLis
  9. Android(安卓)播放资源文件视频
  10. Android中的Banner效果