Trong Android, cách chúng tôi làm cho bàn phím điện thoại luôn hiển thị trong ứng dụng? Phần trên cùng hiển thị nội dung mà ứng dụng muốn hiển thị và phần dưới cùng hiển thị bàn phím luôn.Android: Cách làm cho bàn phím luôn hiển thị?
Trả lời
Thêm android: windowSoftInputMode = "stateAlwaysVisible" để hoạt động của bạn trong file AndroidManifest.xml:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
Trong ứng dụng thử nghiệm của tôi điều này cho thấy bàn phím trên khởi đầu của ứng dụng mặc dù nó không phải là cố định ở đó nhưng có thể được loại bỏ bằng cách nhấn nút quay lại.
Để đảm bảo bàn phím luôn hiển thị, bạn có thể phải tạo bàn phím của riêng mình làm một phần của giao diện người dùng của ứng dụng. Dưới đây là hướng dẫn để chỉ cho bạn cách thực hiện việc này với KeyboardView: http://www.fampennings.nl/maarten/android/09keyboard/index.htm
Bạn phải có EditText
trong bố cục của mình và cần đến mức độ EditText
lớp cơ sở. sau đó ghi đè phương pháp onKeyPreIme()
và trả lại Đúng. Bây giờ bàn phím của bạn sẽ luôn hiển thị và không thể bị loại bỏ bằng phím Quay lại.
Thận trọng: Vì phương thức onKeyPreIme()
trả về true
bạn không thể thoát khỏi ứng dụng bằng phím quay lại.
Ví dụ:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
Tôi tìm thấy một cách làm việc cho tôi để giữ cho bàn phím mềm có thể nhìn thấy sau một chỉnh sửa trong myEditText
lĩnh vực của tôi về lớp EditText
. Bí quyết là để ghi đè lên các phương pháp onEditorAction
để nó trả về true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
hoặc nếu không có onEditorAction
trở true
chỉ sau khi "Hoàn thành" chìa khóa nhấp chuột (IME_ACTION_DONE
) nếu không false
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
(xem thêm this answer trên phương pháp onEditorAction
)
Thêm android:windowSoftInputMode="stateAlwaysVisible
vào tệp kê khai đã giúp để bàn phím mềm được hiển thị khi bắt đầu hoạt động nhưng nó không ngăn nó biến mất một lần nữa bất cứ khi nào phím "Xong" được nhấp sau khi chỉnh sửa.
Tôi đã cố gắng sử dụng mã nguồn Android và có thể kéo bàn phím xung quanh nhưng không chắc chắn phần nào tôi nên sửa đổi để tắt chế độ ẩn. Tôi đang xem lớp dưới LatinIME.java. Tôi đã thử thêm inputView từ mã google đó vào WindowManager.addView. – LittleFunny
@Simon Xem cập nhật của tôi cho câu trả lời của tôi. Bạn có thể muốn sử dụng KeyboardView. – Intrications