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()trongonResume(): 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:

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