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){
// .......
}
}