Android 登陆页面案例 监听文本框是否有值设置样式以及密码框显示与隐藏

Android 登陆页面案例 监听文本框是否有值改变样式以及密码框显示与隐藏

页面效果:
在这里插入图片描述
在这里插入图片描述
代码(部分样式根据自己页面调整):
activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="0"
            android:layout_column="0"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="76dp"
            android:text="用户登陆"
            android:textColor="#ff2f2f2f"
            android:textSize="25sp" />

        <EditText
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="171dp"
            android:drawableLeft="@drawable/icon_center"
            android:ems="14"
            android:text=""
            android:hint="输入用户名" />

        <EditText
            android:id="@+id/password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="223dp"
            android:drawableLeft="@drawable/icon_password"
            android:ems="14"
            android:text=""
            android:hint="输入密码"
            android:password="true" />

        <ToggleButton
            android:id="@+id/togglePwd"
            android:layout_width="26dp"
            android:layout_height="14dp"
            android:layout_marginTop="239dp"
            android:layout_alignRight="@id/name"
            android:background="@drawable/toggle_selector"
            android:checked="false"
            android:textOff=""
            android:textOn="" />

        <Button
            android:id="@+id/button1"
            android:layout_width="269dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="292dp"
            android:background="@drawable/bt_shape"
            android:onClick="doQuery"
            android:text="登录"
            android:textColor="#ffffffff" />

    </RelativeLayout>


</LinearLayout>

MainActivity类:

public class MainActivity extends AppCompatActivity {

    private EditText name;
    private EditText password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name = (EditText) findViewById(R.id.name);
        name.setCompoundDrawablePadding(20);//设置图片和text之间的间距
        name.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Drawable drawable;
                //判断用户名输入框是否有值
                if (name.getText().length() > 0) { //有值
                    drawable = getResources().getDrawable(R.drawable.icon_center_blue);
                    drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
                    name.setCompoundDrawables(drawable, null, null, null);
                } else { //没有值
                    drawable = getResources().getDrawable(R.drawable.icon_center);
                    drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
                    name.setCompoundDrawables(drawable, null, null, null);
                }
            }

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

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

        password = (EditText) findViewById(R.id.password);
        password.setCompoundDrawablePadding(20);//设置图片和text之间的间距
        password.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Drawable drawable;
                //判断密码输入框是否有值
                if (password.getText().length() > 0) { //有值
                    drawable = getResources().getDrawable(R.drawable.icon_password_blue);
                    drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
                    password.setCompoundDrawables(drawable, null, null, null);
                    password.setSelection(password.getText().length());//设置光标放到最后
                } else { //没有值
                    drawable = getResources().getDrawable(R.drawable.icon_password);
                    drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
                    password.setCompoundDrawables(drawable, null, null, null);
                    password.setSelection(password.getText().length());//设置光标放到最后
                }
            }

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

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

        //密码输入框显示与隐藏
        ToggleButton togglePwd = (ToggleButton) findViewById(R.id.togglePwd);
        togglePwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    //如果选中,显示密码
                    password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                } else {
                    //否则隐藏密码
                    password.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
            }
        });

    }

    //登录
    public void doQuery(View view){
        // .......
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值