Lập trình ẩn Bàn phím mềm Android khi nhấp vào nút và chạm bên ngoài

Lập trình ẩn Bàn phím mềm Android khi nhấp vào nút và chạm bên ngoài
Java

Quản lý Bàn phím mềm Android

Làm việc với các ứng dụng Android thường yêu cầu người dùng nhập liệu thông qua bàn phím ảo. Trong trường hợp bạn có EditText và Button trong bố cục của mình, việc quản lý bàn phím một cách hiệu quả là điều cần thiết. Cụ thể, sau khi nhập văn bản và nhấp vào Button, bạn có thể muốn ẩn bàn phím để cải thiện trải nghiệm người dùng.

Bài viết này sẽ cung cấp một ví dụ đơn giản và thực tế về cách đóng bàn phím mềm Android theo chương trình khi người dùng tương tác với các khu vực bên ngoài bàn phím. Bằng cách làm theo các bước đã nêu, bạn có thể nâng cao khả năng sử dụng và giao diện của ứng dụng Android của mình.

Yêu cầu Sự miêu tả
getSystemService Truy xuất dịch vụ cấp hệ thống theo tên, chẳng hạn như inputMethodManager để xử lý các phương thức nhập.
hideSoftInputFromWindow Yêu cầu ẩn cửa sổ bàn phím mềm hiện đang chấp nhận đầu vào.
getWindowToken Trả về mã thông báo cửa sổ được liên kết với chế độ xem, cần thiết để ẩn bàn phím.
onTouchEvent Xử lý các sự kiện chuyển động trên màn hình cảm ứng, được sử dụng ở đây để ẩn bàn phím khi chạm ra bên ngoài.
findViewById Tìm và trả về chế độ xem có ID đã cho, dùng để tham chiếu các thành phần giao diện người dùng như EditText và Button.
setOnClickListener Đặt lệnh gọi lại sẽ được gọi khi chế độ xem được nhấp vào, được sử dụng để kích hoạt ẩn bàn phím.

Hiểu việc thực hiện

Các tập lệnh được cung cấp minh họa cách ẩn bàn phím mềm Android theo chương trình khi tương tác với giao diện người dùng, đặc biệt là sau khi nhập văn bản vào một EditText trường và nhấp vào một Button. Các ví dụ về Java và Kotlin sử dụng một số thành phần và phương thức chính của Android. Cả hai tập lệnh đều bắt đầu bằng cách nhập các lớp cần thiết như Activity, Context, InputMethodManagervà các thành phần giao diện người dùng khác nhau. bên trong onCreate phương pháp, findViewById được sử dụng để liên kết các EditTextButton từ bố cục đến mã. Các setOnClickListener Sau đó, phương pháp này được đặt trên nút để kích hoạt hideKeyboard chức năng khi được nhấp vào.

Trong cả hai cách triển khai, hideKeyboard công dụng chức năng getSystemService để lấy lại InputMethodManager dịch vụ. phương pháp hideSoftInputFromWindow sau đó được gọi với getWindowToken sau đó EditText để ẩn bàn phím mềm. Ngoài ra, onTouchEvent phương thức bị ghi đè để đảm bảo bàn phím bị ẩn khi người dùng chạm vào bên ngoài trường nhập. Cách tiếp cận này cải thiện trải nghiệm người dùng bằng cách ngăn bàn phím cản trở tầm nhìn một cách không cần thiết. Bằng cách sử dụng các phương pháp này và xử lý các sự kiện chạm một cách thích hợp, các tập lệnh sẽ quản lý hiệu quả hoạt động của bàn phím mềm trong ứng dụng Android.

Ẩn Bàn phím mềm Android khi nhấp và chạm vào nút bên ngoài trường nhập liệu

Sử dụng Java trong phát triển Android

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    private EditText editText;
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideKeyboard();
            }
        });
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        hideKeyboard();
        return super.onTouchEvent(event);
    }
 
    private void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
}

Xử lý việc loại bỏ bàn phím mềm trong Android bằng Kotlin

Sử dụng Kotlin để phát triển ứng dụng Android

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
 
class MainActivity : Activity() {
    private lateinit var editText: EditText
    private lateinit var button: Button
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        editText = findViewById(R.id.editText)
        button = findViewById(R.id.button)
 
        button.setOnClickListener { hideKeyboard() }
    }
 
    override fun onTouchEvent(event: MotionEvent): Boolean {
        hideKeyboard()
        return super.onTouchEvent(event)
    }
 
    private fun hideKeyboard() {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(editText.windowToken, 0)
    }
}

Khám phá các kỹ thuật nâng cao để quản lý bàn phím

Ngoài các phương pháp cơ bản để ẩn bàn phím mềm Android, các nhà phát triển có thể triển khai các kỹ thuật nâng cao hơn để nâng cao trải nghiệm người dùng. Một phương pháp như vậy liên quan đến việc sử dụng TouchListeners trên nhiều thành phần giao diện người dùng để phát hiện các sự kiện chạm và ẩn bàn phím tương ứng. Cách tiếp cận này đảm bảo rằng bàn phím sẽ bị ẩn bất cứ khi nào người dùng tương tác với bất kỳ phần nào của màn hình bên ngoài màn hình. EditText. Ngoài ra, việc quản lý khả năng hiển thị của bàn phím có thể được kết hợp với logic lấy nét, trong đó tiêu điểm được chuyển ra khỏi EditText sang thành phần khác, khiến bàn phím tự động ẩn đi.

Một kỹ thuật khác là sử dụng View.OnFocusChangeListener trên EditText. Trình nghe này có thể phát hiện khi EditText mất tập trung và sau đó ẩn bàn phím. Phương pháp này đặc biệt hữu ích trong các biểu mẫu hoặc ứng dụng nhập dữ liệu có liên quan đến nhiều trường đầu vào. Hơn nữa, để có trải nghiệm người dùng liền mạch hơn, nhà phát triển có thể sử dụng SoftKeyboardStateWatcher, một triển khai tùy chỉnh theo dõi các thay đổi trạng thái hiển thị của bàn phím và phản hồi tương ứng. Bằng cách tích hợp các kỹ thuật tiên tiến như vậy, các nhà phát triển có thể tạo ra các ứng dụng Android trực quan và thân thiện hơn với người dùng.

Câu hỏi thường gặp về quản lý bàn phím mềm Android

  1. Làm cách nào để phát hiện khi bàn phím được hiển thị hoặc ẩn?
  2. Bạn có thể sử dụng một SoftKeyboardStateWatcher để theo dõi những thay đổi về khả năng hiển thị của bàn phím.
  3. Có thể tự động ẩn bàn phím khi người dùng cuộn không?
  4. Có, bạn có thể triển khai một OnScrollListener trên chế độ xem cuộn để ẩn bàn phím trong khi cuộn.
  5. Tôi có thể lập trình hiển thị bàn phím khi EditText Tập trung?
  6. Có, sử dụng InputMethodManager.showSoftInput để hiển thị bàn phím khi EditText đạt được sự tập trung.
  7. Làm cách nào để ẩn bàn phím khi người dùng nhấn nút quay lại?
  8. Ghi đè onBackPressed phương pháp và ẩn bàn phím bằng cách sử dụng InputMethodManager.
  9. Tôi có thể tùy chỉnh bố cục bàn phím không?
  10. Có, Android cho phép bố trí bàn phím tùy chỉnh thông qua InputMethodService.
  11. Cách tốt nhất để ẩn bàn phím trong một đoạn là gì?
  12. Sử dụng getActivity().getSystemService để có được InputMethodManager trong một mảnh.
  13. Làm cách nào để ẩn bàn phím khi chuyển đổi giữa các đoạn?
  14. Thực hiện một FragmentTransaction với một người nghe để ẩn bàn phím trong quá trình chuyển đổi.
  15. Có thể tạo hiệu ứng ẩn của bàn phím không?
  16. Có, bạn có thể tạo hiệu ứng cho chế độ xem chứa EditText để tạo hiệu ứng che khuyết điểm mượt mà.

Tóm tắt những điểm chính

Quản lý hiệu quả bàn phím mềm Android là rất quan trọng để tạo các ứng dụng trực quan. Bằng cách sử dụng getSystemService để truy xuất inputMethodManager và ẩnSoftInputFromWindow để ẩn bàn phím, nhà phát triển có thể kiểm soát thời điểm bàn phím xuất hiện và biến mất. Việc triển khai trình nghe thao tác chạm và nhấp chuột sẽ tinh chỉnh thêm khả năng kiểm soát này, đảm bảo bàn phím ẩn thích hợp khi tương tác với các thành phần giao diện người dùng khác. Những kỹ thuật này nâng cao trải nghiệm người dùng bằng cách ngăn bàn phím cản trở nội dung quan trọng hoặc các thành phần giao diện người dùng.