EditText
EditText和Button都是TextView的子类,区别在于TextView不可以编辑,而EditText可以编辑。
常用属性
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!--hint占位符,类似placeholder;background订制背景色,或指定背景样式描述文件;drawableLeft:在左侧添加图片,值是图片的路径;drawablePadding:给图片添加内边距;maxLine:最多能占的行数;inputType输入的类型,可以是密码、文字、数字等-->
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="用户名"
android:paddingLeft="10dp"
android:textColor="#808080"
android:textSize="16sp"
android:background="@drawable/username_bg"
android:drawableLeft="@drawable/username"
android:drawablePadding="10dp"
android:maxLines="1"
/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="密码"
android:paddingLeft="10dp"
android:maxLines="1"
android:drawableLeft="@drawable/password"
android:layout_below="@id/username"
android:layout_marginTop="10dp"
android:inputType="numberPassword"
android:background="@drawable/username_bg"
android:drawablePadding="10dp"
android:textColor="#808080"
android:textSize="16sp"
/>
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/password"
android:layout_marginTop="10dp"
android:background="@drawable/change_color"
android:text="登录"
android:textColor="#fff"
android:textSize="20sp"
/>
</RelativeLayout>
- 背景样式文件drawable/username_bg
- 跟标签可以选择shape,直接定义样式。shape的子标签有:
stroke:描边,需指定边框宽度。
solid:填充颜色
corners:圆角,需指定radius属性
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="#808080"
android:width="1dp"/>
<corners android:radius="20dp"/>
</shape>
- 也可以选择selecter。这个是用来定义动态效果。
selecter内部有多个item标签,分别指定不同状态前后的样式,比如点击前和点击后,对应的state_pressed的值分别为false和true。item的内部是shape标签,使用方法同上
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape android:shape="rectangle">
<solid android:color="#00f"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#f0f"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>
监听事件
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class EditTextActivity extends AppCompatActivity {
private Button btnLogin;
private EditText username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//findViewById方法必须放在setContentView(R.layout.activity_edit_text)后面,不然在btnLogin.setOnClickListener(new View.OnClickListener() 方法中会报空指针
setContentView(R.layout.activity_edit_text);
btnLogin = findViewById(R.id.login);
//定义按钮点击事件
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(EditTextActivity.this,"登陆成功",Toast.LENGTH_LONG).show();
}
});
username = findViewById(R.id.username);
//定义EditText文本框的内容改变监听事件
username.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Log.d("username",charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
}
总结安卓开发中常用几种布局的属性
参考: https://blog.csdn.net/liuxinguang2013/article/details/79248858