如何在Android中的编辑框上放置跟踪器

时间:2013-07-24 06:38:46

标签: android passwords

我是android新手 我有一个编辑框。我们必须在EditBox中输入用于注册屏幕的密码。 我想要的是,当用户点击它时,它会突出显示EditBox,然后字符越过6个字符的限制,然后在EditBox右侧显示一个绿色勾号。 如果你能给我代码 这是我的代码

我会非常感谢你 提前致谢 Gaurav Mehta

1 个答案:

答案 0 :(得分:0)

1)在drawable目录中创建hightlight.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/highlight_bg" android:state_focused="true"></item>
    <item android:drawable="@drawable/normal_bg" android:state_focused="false"></item>
</selector>

2)在drawable目录中创建normal_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#00FFFFFF" />
</shape>

3)在drawable目录中创建highlight_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="#FFFF0000" />
</shape>

4)在您的布局中,您需要使用以下参数创建。

<RelativeLayout
    android:id="@+id/frameLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="31dp" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/highlight"
        android:ems="10"
        android:hint="Enter Password"
        android:inputType="textPassword" >
    </EditText>

    <ImageView
        android:id="@+id/imgTick"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignRight="@+id/editText1"
        android:src="@drawable/tick"
        android:visibility="gone" />
</RelativeLayout>

将任何勾选图片放入可绘制目录。

5)使用以下代码在密码字段上获取长度监听器。

EditText editText1 = (EditText)findViewById(R.id.editText1);
editText1.addTextChangedListener(new TextWatcher() {

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

    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {
        if(s.length()>6){
            findViewById(R.id.imgTick).setVisibility(View.VISIBLE);
        }else{
            findViewById(R.id.imgTick).setVisibility(View.GONE);
        }
    }
});