Android開發第六講EditText 編輯框
一丶EditText編輯框屬性
EditText 繼承自 TextView 所以它的屬性我們可以使用. TextView不支持文字的編輯.而EditText支持文字的編輯.
那么說一下常用的屬性吧
android:hint = "提示文字" 加上這個編輯框會提示你要輸入的文字
android:inputType="textPassworld" 加上這個,表示編輯框輸入的時候文字是密文密碼形式
android:inputType 可以規定編輯框輸入的各種形式.比如密碼形式 指定輸入數字等.
android:drawableleft 可以給編輯框加圖片.這樣可以做一個很好的登錄框
使用常用屬性配合Button做一個登錄框,並且給Button添加監聽事件響應消息.
Xml如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".EdtActive">
<!--設置用戶名提示框-->
<EditText
android:id="@+id/EdtView1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="請輸入用戶名"
android:maxLines="1"
android:singleLine="true"
android:paddingLeft="15dp"
android:background="@drawable/btn_shape1"
android:layout_marginTop="50dp"
android:drawableLeft="@drawable/user"
android:textSize="20sp">
</EditText>
<!--設置密碼提示框-->
<EditText
android:id="@+id/EdtView2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="請輸入密碼"
android:paddingLeft="15dp"
android:background="@drawable/btn_shape1"
android:inputType="textPassword"
android:layout_below="@id/EdtView1"
android:layout_marginTop="10dp"
android:drawableLeft="@drawable/lock"
android:drawablePadding="10dp"
android:textSize="20sp">
</EditText>
<!--創建按鈕-->
<Button
android:id="@+id/btn_login"
android:layout_below="@id/EdtView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="30sp"
android:text="登錄"
android:background="@drawable/btn_4"
android:textColor="#ffff00">
</Button>
</RelativeLayout>
其中我使用了user圖片以及 lock圖片.這個可以在網址上找到. 下載32*32資源即可.
https://www.flaticon.com/search?word=user
然后使用之前的 狀態選擇器布局.
狀態選擇器 布局如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 狀態選擇器 android:state_pressed = true代表按壓-->
<item android:state_pressed="true">
<!-- 如果是按壓,那么我們使用shape畫一個-->
<shape>
<!-- 設置實心顏色,並且設置圓角-->
<solid android:color="#ff0000"></solid>
<corners android:radius="10dp"></corners>
</shape>
</item>
<!-- 否則設置為綠色-->
<item android:state_pressed="false">
<!-- 如果是按壓,那么我們使用shape畫一個-->
<shape>
<!-- 設置實心顏色,並且設置圓角-->
<solid android:color="#0ca30c"></solid>
<corners android:radius="10dp"></corners>
</shape>
</item>
</selector>
最后實現按鈕點擊事件
package com.ibinary.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class EdtActive extends AppCompatActivity {
// 響應按鈕事件
private Button m_Login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edt_active);
m_Login = (Button) findViewById(R.id.btn_login);
m_Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(EdtActive.this, "登錄成功", Toast.LENGTH_SHORT).show();
}
});
}
}
你的Button是定義在EdtView中的.所以我們的代碼要寫在 EdtActive.java中
效果如下
按鈕提示文字 分別是請輸入用戶名 以及請輸入密碼. 而且都加了圖標.
登錄按鈕加了狀態選擇器
點擊登錄提示登錄成功
二丶編輯框響應監聽事件
響應監聽事件就需要寫代碼了.
響應的是 編輯框的 addTextChangedListener
代碼如下
package com.ibinary.myapplication;
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 EdtActive extends AppCompatActivity {
// 響應按鈕事件
private Button m_Login;
private EditText m_EdtUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edt_active);
m_Login = (Button) findViewById(R.id.btn_login);
m_Login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(EdtActive.this, "登錄成功", Toast.LENGTH_SHORT).show();
}
});
m_EdtUser = (EditText)findViewById(R.id.EdtView1);
m_EdtUser.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) {
//CharSequence 參數1是我們輸入的字符.可以在調試輸出窗口中數據
Log.d("EditText = ", charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
}
在修改中輸出消息.可以在Android Studio的日志窗口中看到
至此基本的ExitText屬性就到這