2009-10-02 22 views
30

एंड्रॉइड में, हम एप्लिकेशन में डिवाइस कीपैड को हमेशा कैसे दिखते हैं? शीर्ष भाग उस सामग्री को प्रदर्शित करता है जिसे एप्लिकेशन प्रस्तुत करना चाहता है और निचला भाग हमेशा कीपैड प्रदर्शित करता है। अपनी गतिविधि को windowSoftInputMode = "stateAlwaysVisible" AndroidManifest.xml फ़ाइल में:एंड्रॉइड: कीपैड को हमेशा कैसे दिखाना है?

उत्तर

39

एंड्रॉयड जोड़े

<activity android:name=".MainActivity" 
android:label="@string/app_name" 
android:windowSoftInputMode="stateAlwaysVisible" /> 

अपने परीक्षण ऐप्लिकेशन में इस आवेदन की शुरुआत पर कुंजीपटल से पता चलता है, हालांकि यह वहाँ निश्चित नहीं है लेकिन बैक बटन दबाकर खारिज कर दिया जा सकता है।

यह सुनिश्चित करने के लिए कि कीबोर्ड हमेशा दिखाई देता है, आपको अपने एप्लिकेशन के यूआई के हिस्से के रूप में अपना कीबोर्ड बनाना पड़ सकता है। कीबोर्ड शो के साथ यह कैसे करना है यह दिखाने के लिए यहां एक ट्यूटोरियल है: http://www.fampennings.nl/maarten/android/09keyboard/index.htm

+0

मैंने एंड्रॉइड स्रोत कोड का उपयोग करने की कोशिश की और कीबोर्ड को चारों ओर खींच सकते हैं लेकिन यह सुनिश्चित नहीं है कि मुझे छिपाने से इसे अक्षम करने के लिए किस भाग को संशोधित करना चाहिए। मैं लैटिनआईएम.जावा के तहत कक्षा को देख रहा हूं। मैंने उस Google कोड से inputMiew को WindowManager.addView में जोड़ने का प्रयास किया। – LittleFunny

+0

@ सिमॉन मेरे उत्तर में मेरा अपडेट देखें। आप शायद कीबोर्ड व्यू का उपयोग करना चाहते हैं। – Intrications

10

आपके पास अपने लेआउट में EditText होना चाहिए और इसकी सीमा EditText आधार वर्ग की आवश्यकता है। फिर onKeyPreIme() विधि ओवरराइड करें, और सही वापस करें। अब आपका कीबोर्ड हमेशा दिखाई देगा और बैक कुंजी द्वारा खारिज नहीं किया जा सकता है।

सावधानी: अपने onKeyPreIme() विधि की वजह से रिटर्न true आप कुंजी वापस का उपयोग कर अपने ऐप से बाहर निकलते नहीं कर सकते।

उदाहरण:

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

मैं एक तरीका है कि मुझे वर्ग EditText की मेरी myEditText क्षेत्र में एक संपादन के बाद दिखाई नरम कुंजीपटल रखने के लिए के लिए काम करता पाया। (यह भी देखें चाल इतना है कि यह रिटर्न true

myEditText.setOnEditorActionListener(new OnEditorActionListener() {      
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     return true; 
    }  
    }); 

वरना "हो गया" कुंजी क्लिक करने के बाद ही onEditorAction वापसी true है (IME_ACTION_DONE) अन्यथा 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; 
    }  
    }); 

onEditorAction विधि ओवरराइड करने के लिए है this answeronEditorAction विधि पर)

मैनिफेस्ट फ़ाइल में android:windowSoftInputMode="stateAlwaysVisible जोड़ने में सहायता मिली गतिविधि शुरू होने पर दिखाए गए सॉफ्ट कीबोर्ड के लिए, लेकिन संपादन के बाद "पूर्ण" कुंजी पर क्लिक होने पर इसे फिर से गायब होने से नहीं रोका।

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