2010-07-29 42 views
10

Có nhiều câu hỏi liên quan đến cách hiển thị/ẩn bàn phím mềm theo chương trình.Ngăn không cho bàn phím mềm bị loại

Tuy nhiên, như chúng ta đều biết nút quay lại Android sẽ khiến bàn phím bị loại bỏ. Có cách nào để ngăn người dùng loại bỏ bàn phím bằng cách nhấn nút quay lại không?

Tôi đã cố chụp nút quay lại, nhưng khi bàn phím được hiển thị trênKeyDown trong hoạt động của tôi không được gọi khi phím quay lại được nhấn và bàn phím mềm hiển thị.

Mọi đề xuất sẽ được đánh giá rất nhiều.

+1

Điều này có vẻ chống người dùng vừa phải. Tại sao bạn muốn làm nó? – Qberticus

Trả lời

2

tôi đã làm nó bằng cách sử dụng sau đây hai phương pháp:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK)  
    { 
     ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput 
       (InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); 
    } 
    return super.onKeyUp(keyCode, event); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK)  
    { 
     ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput 
       (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

không hoạt động, bàn phím tiếp tục ẩn ở nút quay lại – htafoya

3

tôi đã tìm thấy giải pháp:

public class KeyBoardHolder extends EditText { 
    public KeyBoardHolder(Context context) { 
     super(context); 
    } 

    public KeyBoardHolder(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 

    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      return true; 
     } 
     return false; 
    } 
} 

Điều này ngăn cản bàn phím khỏi bị đóng lại bởi nút quay lại.

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