Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách đặt Input Type cho EditText bằng code Java/Kotlin trên Android

Giới thiệu

Ví dụ này minh họa cách thay đổi loại bàn phím (input type) của EditText tại runtime (programmatically) thay vì khai báo trong XML.

Các bước thực hiện

Bước 1: Tạo dự án mới

Android Studio → File → New Project → Empty Activity.

Bước 2: Giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:padding="4dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="SetInputTypeNumber"
        android:text="Đặt Input Type = Số" />

</LinearLayout>

Bước 3: Code MainActivity (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
    }

    public void SetInputTypeNumber(View view) {
        // Đặt chỉ nhập số (bàn phím số)
        editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    }
}

Bước 4: Manifest (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                

Chạy ứng dụng

Kết nối thiết bị, nhấn Run. Ban đầu EditText dùng bàn phím mặc định. Nhấn nút → bàn phím chuyển sang chỉ số.

Cách đặt Input Type cho EditText bằng code Java/Kotlin trên Android

Các hằng số InputType phổ biến

Hằng số Mô tả Bàn phím hiển thị
TYPE_CLASS_TEXT Văn bản thường QWERTY
TYPE_CLASS_NUMBER Chỉ số (0-9) Numeric keypad
TYPE_CLASS_PHONE Số điện thoại (*, #, +) Dialpad
TYPE_CLASS_DATETIME Ngày/giờ Date/Time picker
TYPE_TEXT_VARIATION_EMAIL_ADDRESS Email QWERTY + @ .com
TYPE_TEXT_VARIATION_PASSWORD Mật khẩu (ẩn chữ) QWERTY + ẩn ký tự
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD Mật khẩu (hiện chữ) QWERTY
TYPE_TEXT_FLAG_MULTI_LINE Nhiều dòng (Enter = xuống dòng) QWERTY + Enter
TYPE_TEXT_FLAG_CAP_WORDS Viết hoa chữ cái đầu từ QWERTY + auto-cap

Kết hợp nhiều flag (Bitwise OR)

// Email + tự động viết hoa từ đầu
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

// Số điện thoại + có thể nhập ký tự đặc biệt
editText.setInputType(InputType.TYPE_CLASS_PHONE);

// Mật khẩu số (PIN)
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

Lưu ý quan trọng

  • Gọi setInputType() sẽ reset cursor về đầu. Lưu vị trí cursor trước rồi restore: int pos = editText.getSelectionStart(); ... editText.setSelection(pos);.
  • Để ẩn/hiện mật khẩu động: toggle TYPE_TEXT_VARIATION_PASSWORD / TYPE_TEXT_VARIATION_VISIBLE_PASSWORD kết hợp với TYPE_CLASS_TEXT.
  • Kotlin: editText.inputType = InputType.TYPE_CLASS_NUMBER.