2009-10-02 53 views
30

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

39

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

+0

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

+0

@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

10

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); 
    } 
} 

onKeyPreIme() - Android developer

0

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.

Các vấn đề liên quan