EditText常用属性和监听事件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值