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

Ngăn EditText tự động lấy focus khi Activity khởi động trong Android

Vấn đề

Mặc định EditText đầu tiên trong layout sẽ tự động nhận focus và bật bàn phím khi Activity start. Đôi khi không mong muốn hành vi này.

Giải pháp

Bước 1: Tạo project

Bước 2: Layout activity_main.xml

<LinearLayout ... android:orientation="vertical" android:background="#dde4dd">
    <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>

Bước 3: MainActivity.java

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);
        // Cho phép focus khi user chạm vào
        editText.setFocusableInTouchMode(true);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Xóa focus khi activity resume
        editText.clearFocus();
    }
}

Giải thích:

  • setFocusableInTouchMode(true): Cho phép EditText nhận focus khi user chạm vào (touch mode).
  • clearFocus() trong onResume(): Gỡ focus ngay khi Activity hiển thị, ngăn bàn phím tự bật.

Cách khác (XML): Thêm vào parent layout android:focusable="true" android:focusableInTouchMode="true" để parent "hút" focus.

Kết quả

Khởi động app: không bàn phím, EditText không focus:

Ngăn EditText tự động lấy focus khi Activity khởi động trong Android

Chạm vào EditText: bàn phím hiện ra bình thường:

Ngăn EditText tự động lấy focus khi Activity khởi động trong Android