2010-07-29 22 views
10

सॉफ्ट कीबोर्ड को प्रोग्रामेटिक रूप से दिखाने/छिपाने के तरीके से संबंधित कई प्रश्न हैं।सॉफ्ट कीबोर्ड को खारिज होने से रोकें

हालांकि, जैसा कि हम सभी जानते हैं कि एंड्रॉइड बैक बटन कीबोर्ड को खारिज कर देगा। क्या उपयोगकर्ता को बैक बटन प्रेस के साथ कीबोर्ड को खारिज करने से रोकने का कोई तरीका है?

मैंने बैक बटन को कैप्चर करने का प्रयास किया, लेकिन जब मेरी कुंजी में कीबोर्ड को प्रदर्शित किया जाता है तब वापस नहीं किया जाता है जब बैक कुंजी दबाया जाता है और सॉफ्ट कीबोर्ड दिखाई देता है।

किसी भी सुझाव की सराहना की जाएगी।

+1

यह मामूली एंटी-उपयोगकर्ता लगता है। तुम ऐसा क्यों करना चाहते हो? – Qberticus

उत्तर

2

मैं निम्नलिखित दो तरीकों का उपयोग करके यह किया:

@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

काम नहीं किया, कीबोर्ड बैक बटन पर छिपाना जारी है – htafoya

3

मैंने पाया समाधान:

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

यह वापस बटन से बंद किया जा रहा से कीबोर्ड से बचाता है।

संबंधित मुद्दे