• 18 UI_常用组件-BasicViews-EditText-InputFilter


    UI-常用组件basic View-EditText

    1EditText文本输入框,相当于html当中<input type="text"  />.

      代码:<EditText

            android:id="@+id/editText1"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:hint="请输入数字!!"

            >

    </EditText>

    2、子元素    requestFocus  让某个元素自动获取焦点。 

    当进入页面时,都没有<requestFocus />时,系统自动把焦点放在第一个子元素上;

    3EditText文本输入框的属性:

    ❶hinttext为空时显示的文字提示信息。

    ❷TextColorHint:可以通过TextColorHint 设置提示信息的颜色。

    ❸digits:允许输入的文字

    ❹numeric:只能输入数字,有三种值, integer(正整数),singed decimal

    ❺:ems VS maxLength   maxLength可以真正的控制字符个数

    限制 EditText 内容的特殊方式1

     editText.addTextChangedListener(new TextWatcher()

    EditText 内容的特殊方式2

    editText3.setFilters(new InputFilter[]{

    new InputFilter.AllCaps(),

    new InputFilter.LengthFilter(10),

    new InputFilter(){

    @Override

    public CharSequence filter(CharSequence source, int start,

    int end, Spanned dest, int dstart, int dend) {

    return null;

    }

    }

    });


    特殊方式12的小案例:

    (其中方式1editText2editText3;方式2editText1

    代码:

    main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <EditText
            android:id="@+id/editText1"
            android:layout_width="168dp"
            android:layout_height="50dp"
             android:ems="10"
             android:maxLength="10"
             android:singleLine="true"
             android:hint="请输入数字!!"
             >
            <requestFocus />
        </EditText>
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:ems="10"
             android:maxLength="10"
             android:singleLine="true"
             android:hint="请输入汉字!!"
             android:numeric="integer"
             android:textColorHint="#ff0000"
            android:layout_below="@id/editText1"/>
    
        <EditText
            android:id="@+id/editText3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
             android:maxLength="10"
             android:singleLine="true"
             android:digits="1234abcd.+"
            android:layout_below="@id/editText2" />
    
    </LinearLayout>

    Test_edittextActivity.java:

    package test.edittext;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.InputFilter;
    import android.text.Spanned;
    import android.text.TextWatcher;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class Test_edittextActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            EditText editText1=(EditText)findViewById(R.id.editText1);
            EditText editText2=(EditText)findViewById(R.id.editText2);
            EditText editText3=(EditText)findViewById(R.id.editText3);
            
            editText1.setFilters(new InputFilter[]{
                    new InputFilter.LengthFilter(5),//对长度进行过滤,只能输入5个
                    new InputFilter.AllCaps(),//输入的小写字母都会变成大写字母
                    new InputFilter(){
    
                        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,
                                int dend) {
                            //source当前输入的字符
                            //dest是之前输入的字符
                            //以上参数可以通过断点来检测
                            //可以将当前输入的转化成中文
                            if("1".equals(source.toString())){
                                return "一";
                            }else if("2".equals(source.toString())){
                                return "二";
                            }else{
                                return null;
                            }
                            
                        }
                        
                    }
                    
            });
            
            editText2.addTextChangedListener(new TextWatcher(){
                public void afterTextChanged(Editable s) {//修改文本之后
                    String string = s.toString();
                    //s输入什么就在显示框中弹出什么内容
                    Toast.makeText(getApplicationContext(), string, 1).show();
                }
                public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                }
                public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                }
            });
            
            editText3.addTextChangedListener(new TextWatcher(){
                public void afterTextChanged(Editable s) {//修改文本之后
                    String string = s.toString();
                    if(string.indexOf("4")!=-1){//不能输入4,如果输入4就弹出提示框,并且清空
                        s.clear();
                        Toast.makeText(getApplicationContext(), "不能输入4", 1).show();
                    }
                }
                public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                    // 修改文本之前
                }
                public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                }
            });
        }
    }

    运行结果:

     没有输入前的界面:                           输入第一个文本框1a2b3:     

                  

     输入第二个文本框1234时:                 输入第三个文本框1234时

              

  • 相关阅读:
    Web.xml配置详解
    ANNOTATION 注解
    Gradle的使用
    Version Control
    Building Tool(Maven/Gradle)
    HTTP协议
    函数式编程
    injection
    Container
    Building Tool(Maven/Gradle)
  • 原文地址:https://www.cnblogs.com/cxm-weiniss/p/7212304.html
Copyright © 2020-2023  润新知