2014-12-31 19 views
22

Tôi có một hoạt động có văn bản thuần túy. khi hoạt động đến, tôi luôn tập trung vào Edittext. Tôi đã làm cho phím chức năng luôn hiển thị bằng cách cung cấpNgăn việc loại bỏ phím chức năng trên nút quay lại Android nhấn

android:windowSoftInputMode="stateAlwaysVisible" 

trong tệp kê khai. i m thực hiện chức năng trên nhấn nút xong của bàn phím chức năng. Trên thực tế nhu cầu của tôi là softkeyboard phải luôn có mặt khi người dùng sử dụng hoạt động này. bây giờ tôi đã tắt chức năng nhấn nút quay lại, bằng cách ghi đè và không làm gì cả.

@Override 
public void onBackPressed() { 
    // Do nothing 
} 

nhưng softkeyboard loại bỏ trên báo chí lại. Làm thế nào để thoát khỏi điều này. Tôi đã thử điều này Prevent soft keyboard from being dismissed nhưng vẫn còn trên bàn phím báo chí trở lại được miễn nhiệm. Nhưng nó trở lại bằng cách nhấn nút quay lại, Nhu cầu của tôi là backpress không nên loại bỏ softkeyboard. Bất kỳ trợ giúp sẽ được đánh giá cao.

+1

@HareshChhelana đọc câu hỏi hoàn toàn –

+2

ý định của tôi là không đóng/ẩn phím chức năng. Nó để ngăn chặn việc đóng bàn phím trên nút quay lại –

+0

Đây không phải là một câu hỏi trùng lặp. Tại sao các bạn không đọc kỹ câu hỏi và chỉ đơn giản là đánh dấu nó là trùng lặp? –

Trả lời

13

tạo một EditText tùy chỉnh như làm theo với một giao diện:

public class CustomEditText extends EditText { 


    public void setHandleDismissingKeyboard(
     handleDismissingKeyboard handleDismissingKeyboard) { 
      this.handleDismissingKeyboard = handleDismissingKeyboard; 
    } 

    private handleDismissingKeyboard handleDismissingKeyboard; 

    public interface handleDismissingKeyboard { 
     public void dismissKeyboard(); 
    } 

    @SuppressLint("NewApi") 
    public CustomEditText(Context context, AttributeSet attrs, 
          int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     if (event.getKeyCode() == KeyEvent.KEYCODE_BACK 
       && event.getAction() == KeyEvent.ACTION_UP) { 
      handleDismissingKeyboard.dismissKeyboard(); 
      return true; 
     } 
     return super.dispatchKeyEvent(event); 
    } 

sau đó trong hoạt động của bạn tạo khởi CustomEditText và sử dụng của bạn:

customEditText.setHandleDismissingKeyboard(this); 

sau đó thực hiện lớp và ghi đè phương thức và đặt mã của bạn trong rằng

để biết thêm thông tin về câu trả lời của tôi tất cả những gì bạn cần là onKeyPreIme, bạn có thể ghi đè điều đó trong lớp EditText của mình (như tôi gửi cho bạn) để xử lý tất cả khóa trên đó, như phím quay lại hoặc bất kỳ phím nào khác, Tôi đặt một giao diện bên trong trong lớp tùy chỉnh để gọi lại từ lớp này đến từng hoạt động hoặc lớp mà bạn muốn, bạn có thể làm điều đó với phương pháp tĩnh quá, và như bạn muốn ngăn chặn từ bỏ bàn phím, bạn chỉ có thể trả lại true trong đó.

cho việc sử dụng CustomEditText bạn có thể sử dụng xml hoặc trong java, xác định đó và khởi tạo mà như widget khác (Button, TextView, ...), và chỉ khác nhau là bạn cần xác định này trong xml của bạn như:

<yourPackage.CustomEditText ..... /> 
+1

câu trả lời này có vẻ cồng kềnh - trên 'onKeyPreIme()' có thể được giải thích tốt hơn là câu trả lời chính, và lớp bổ sung được đưa ra làm ví dụ về cách nó có thể được sử dụng. – ataulm

+0

@ataulm i giải thích thêm nhưng tôi không nghĩ giải thích thêm cần thiết, bất kỳ cách nào cảm ơn cho thông báo cho tôi và đề xuất của bạn. tôi hy vọng điều này là đủ như tiếng Anh của tôi không tốt tôi không thể giải thích nhiều hơn thế này :) –

+0

@shayanpourvatan Thakz. nó đã hoạt động –

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