安卓密码框、EditText

目录

1. 基础使用

2. 密码的展示与隐藏

(1) 使用setTransformationMethod方法

(2) 使用setInputType方法

3. imeOptions属性

4. 单行设置

5. 焦点位置


在安卓中使用密码框普遍采用EditText设置inputType="textPassword"的方式。

1. 基础使用

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入密码" 

    android:inputType="textPassword" 

    android:maxLines="1"

    android:imeOperation="actionDone" 或  android:imeOperation="actionNext"
    />

2. 密码的展示与隐藏

密码的展示与隐藏有两种方法,setTransformationMethod(设置变化方法)方法setInputType方法;请注意,如果设置了android:hint属性(即提示),使用setInputType方法会导致hint的字体变化推荐使用setTransformationMethod方法

(1) 使用setTransformationMethod方法

// 密码可见
passwordET.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
 
// 密码隐藏
passwordET.setTransformationMethod(PasswordTransformationMethod.getInstance());

(2) 使用setInputType方法

// 密码可见
passwordET.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
 
// 密码隐藏
passwordET.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);

3. imeOptions属性

imeOptions 是 Android 中 EditText 的一个属性,用于指定软键盘的行为。它控制键盘右下角的“Enter”或“Done”按钮的显示文本以及按下该按钮时的行为。请注意,设置该属性一定要设置inputType属性,否则无效。

属性值可为:

actionDone:显示 "Done" 按钮。适用于单行输入,表示用户输入完成。

actionGo:显示 "Go" 按钮。适用于搜索框,表示用户已输入完毕并希望执行搜索操作。

actionSearch:显示 "Search" 按钮。适用于搜索框,表示用户已输入完毕并希望执行搜索操作。 

actionSend:显示 "Send" 按钮。适用于消息输入框,表示用户已输入完毕并希望发送消息。

actionNext:显示 "Next" 按钮。适用于多行输入,表示用户希望移动到下一个输入框。

4. 单行设置

为避免出现多行,可进行单行设置。

建议与imeOperation属性一起使用,将回车键替换!!!

//最大行数(推荐)
android:maxLines="1"

//单行(已淘汰)
android:singleLine="true"

5. 焦点位置

如果想焦点自动出现在字符串末尾,可以设置焦点改变监听器,在编辑框得到焦点时使用 .setSelection( int index ) 方法设置焦点位置。

//工具类
public class EditTextUtils {
    /**
     * 设置EditText焦点出现在末尾
     * @param editTexts N个EditText
     */
    public static void setFocusAtLast(EditText ...editTexts){
        for(int i=0;i<editTexts.length;i++){
            EditText editText=editTexts[i];
            editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                public void onFocusChange(View view, boolean b) {
                    if(b){
                        EditText editText=(EditText) view;
                        editText.setSelection(editText.getText().length());
                    }
                }
            });
        }
    }
}

猜你喜欢

转载自blog.csdn.net/m0_57150356/article/details/134695168