在焦点更改期间编辑EditText时出现问题

时间:2012-05-04 05:40:33

标签: android android-edittext

我有两个EditTexts用于输入用户名和密码,每个用户名和密码分别包含“ENTER A USERNAME”“ENTER A PASSWORD”默认文字。

他们的文字颜色是浅灰色。现在,当他们聚焦时,他们应该将文本颜色以及密码edittext的inputType更改为密码类型(除了其他功能之外)。

它首先成功地将文本颜色更改为黑色,但无法更改回来并且inputType永远不会更改。

请建议我缺少的地方,下面是我的代码:

OnFocusChangeListener pwListener = new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus) {
                //if it has focus then clear the text and make text black
                if(((EditText) v).getText().toString().compareTo(getString(R.string.passwordField)) == 0) {
                    ((EditText) v).setTextColor(R.color.Black);
                    ((EditText) v).setText(R.string.blank);
                    ((EditText) v).setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                }
            } else if(!hasFocus) {
                //if it loses focus and nothing was inputed then change back to default
                if(isEmpty(((EditText) v).getText().toString())) {
                    ((EditText) v).setTextColor(R.color.TextInput);
                    ((EditText) v).setText(R.string.passwordField);
                    ((EditText) v).setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
                }
            }
        }
    };

这是密码编辑文本,这是它的XML:

<EditText
    android:id="@+id/passwordInput"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:layout_marginTop="5dip"
    android:layout_marginLeft="20dip"
    android:layout_marginRight="20dip"
    android:paddingTop="15dip"
    android:paddingBottom="15dip"
    android:text="@string/passwordField"
    android:textColor="@color/TextInput"
    android:textSize="25sp"
    android:gravity="center_vertical"
    android:ems="10" >
 </EditText>

3 个答案:

答案 0 :(得分:3)

为什么你不使用

将Edit A USERNAME“和”ENTER A PASSWORD“设置为Edittext中的提示文本
android:hint="Enter User Name"

当用户点击Edittext时,它会自动消失。

答案 1 :(得分:1)

在您的Xml中使用Hint属性将值设置为默认值。

像:

android:hint="@string/username"

android:hint="@string/password"

相反

android:text="@string/username"

android:text="@string/password"

答案 2 :(得分:0)

使用

android:hint="@string/passwordField"

而不是

android:text="@string/passwordField"

并在用户名

中执行相同操作