Android開發第六講EditText 編輯框


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屬性就到這


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM