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

Cách phát triển bàn phím mềm (Soft Keyboard) cho Android

Giới thiệu

Ví dụ này minh họa cơ chế cơ bản của một Input Method Editor (IME) - bàn phím mềm trên Android. Lưu ý: Đây là ví dụ đơn giản chỉ demo việc hiển thị text từ EditText, không phải IME hoàn chỉnh.

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

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

Android Studio → File → New Project → Chọn "Empty Activity".

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp" />

    <Button
        android:id="@+id/btnShow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/editText"
        android:layout_centerInParent="true"
        android:layout_marginTop="5dp"
        android:onClick="ShowText"
        android:text="HIỂN THỊ TEXT" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btnShow"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Soft KeyBoard Demo"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

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

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

public class MainActivity extends AppCompatActivity {

    EditText editText;
    TextView textView;

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

    public void ShowText(View view) {
        String newText = editText.getText().toString();
        textView.setText(newText);
    }
}

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>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị thật, nhấn Run. Nhập text vào EditText, nhấn nút để hiển thị lên TextView.

Cách phát triển bàn phím mềm (Soft Keyboard) cho Android

Phát triển IME thực sự (Mở rộng)

Để tạo bàn phím mềm thực tế (như Gboard, SwiftKey), bạn cần:

  1. Kế thừa class InputMethodService.
  2. Triển khai giao diện bàn phím trong file XML layout riêng.
  3. Xử lý sự kiện nhấn phím, gửi ký tự qua InputConnection.
  4. Khai báo service trong Manifest với android.permission.BIND_INPUT_METHOD và meta-data android.view.im.
  5. Xử lý nhiều ngôn ngữ, gợi ý từ, gesture typing, voice input...

Tài nguyên: Xem tài liệu chính thức Android IME và mẫu SoftKeyboard sample.