效果大致是这样
下面是代码
MainActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button btn_forget;
private TextView tv_password;
private EditText et_password;
private CheckBox ck_remember;
private RadioGroup rg_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载布局
setContentView(R.layout.activity_main);
// 获取控件
tv_password=findViewById(R.id.tv_password);
et_password= findViewById(R.id.et_password);
btn_forget= findViewById(R.id.btn_forget);
ck_remember= findViewById(R.id.ck_remember);
rg_login = findViewById(R.id.rg_login);
//单选按钮组绑定监听器
rg_login.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.rb_password) {
tv_password.setText("登录密码:");
et_password.setHint("请输入密码");
btn_forget.setText("忘记密码");
ck_remember.setVisibility(View.VISIBLE);
} else if (checkedId == R.id.rb_verifycode) {
tv_password.setText("验证码:");
et_password.setHint("请输入验证码");
btn_forget.setText("获取验证码");
ck_remember.setVisibility(View.INVISIBLE);
}
}
});
}
}
activity_mian.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RadioGroup
android:id="@+id/rg_login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp">
<RadioButton
android:id="@+id/rb_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:checked="true"
android:focusable="auto"
android:text="密码登录"
android:textSize="20sp" />
<RadioButton
android:id="@+id/rb_verifycode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="验证码登录"
android:textSize="20sp"
android:layout_marginLeft="60dp"/>
</RadioGroup>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal"
android:padding="10dp"
>
<!-- 帐号的布局 -->
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机号码:"
android:textColor="@android:color/black"
android:textSize="18sp" />
<!-- EditText表示的是请输入帐号的一个布局 -->
<EditText
android:id="@+id/loginAccount_id"
android:layout_width="35dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/editext_selector"
android:ems="10"
android:hint="请输入手机号码"
android:padding="10dp"
android:paddingRight="40dp"
android:textColor="#ff3b3b3b"
android:textSize="16sp"></EditText>
</LinearLayout>
<!-- 密码和请输入密码的整个布局 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal"
android:padding="10dp"
>
<!-- 密码的布局 -->
<TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="18sp"/>
<!-- 请输入密码的布局 -->
<EditText
android:id="@+id/et_password"
android:layout_width="35dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/editext_selector"
android:ems="10"
android:inputType="textPassword"
android:padding="13dp"
android:paddingRight="30dp"
android:textColor="#ff3b3b3b"
android:textSize="16sp" />
<Button
android:id="@+id/btn_forget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_yanzheng"
android:gravity="center"
android:text="忘记密码"
android:textColor="#000" />
</LinearLayout>
<CheckBox
android:id="@+id/ck_remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"
android:textSize="16sp"
android:layout_below="@id/tv_password"/>
<Button
android:id="@+id/login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="80dp"
android:background="#ffaaaaaa"
android:gravity="center"
android:text="登录"
android:textColor="#000"
android:textSize="30sp"/>
</LinearLayout>
res/drawable/editext_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:drawable="@drawable/shape_edit_focus"/>
<item android:drawable="@drawable/shape_edit_normal"/>
</selector>
shape_edit_focus.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff" />
<stroke
android:width="1dp"
android:color="#ff0000ff" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp" />
</shape>
shape_edit_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffffff" />
<stroke
android:width="1dp"
android:color="#ffaaaaaa" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp" />
</shape>
shape_edit_yanzheng.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#ffaaaaaa" />
<stroke
android:width="1dp"
android:color="#ffaaaaaa" />
<corners
android:bottomRightRadius="5dp"
android:topRightRadius="5dp" />
<padding
android:left="2dp"
android:right="2dp"
/>
</shape>