जबकि अधिकांश लोगों ने सीधे सवाल का जवाब दिया है, मैं इसके पीछे की अवधारणा पर अधिक विस्तार करना चाहता था। सबसे पहले, जब मैंने एक डिफ़ॉल्ट लॉगिन गतिविधि बनाई तो मुझे IME का ध्यान आकर्षित किया गया। इसने मेरे लिए कुछ कोड तैयार किए जिसमें निम्नलिखित शामिल थे:
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
आपको पहले से ही इनपुट टाइप विशेषता से परिचित होना चाहिए। यह केवल Android को ईमेल पता, पासवर्ड या फोन नंबर जैसे पाठ के प्रकार की सूचना देता है। संभावित मूल्यों की पूरी सूची यहां पाई जा सकती है ।
हालाँकि, यह विशेषता थी imeOptions="actionUnspecified"
कि मैं इसके उद्देश्य को नहीं समझता था। एंड्रॉइड आपको कीबोर्ड के साथ बातचीत करने की अनुमति देता है जो स्क्रीन के नीचे से पॉप अप होता है जब पाठ का उपयोग करके चुना जाता है InputMethodManager
। कीबोर्ड के निचले कोने पर, एक बटन होता है, आमतौर पर यह "अगला" या "पूर्ण" कहता है, जो वर्तमान टेक्स्ट फ़ील्ड पर निर्भर करता है। Android आपको इसका उपयोग करके अनुकूलित करने की अनुमति देता है android:imeOptions
। आप "भेजें" बटन या "अगला" बटन निर्दिष्ट कर सकते हैं। पूरी सूची यहां देखी जा सकती है ।
उसके बाद, आप तत्व के TextView.OnEditorActionListener
लिए परिभाषित करके एक्शन बटन पर प्रेस के लिए सुन सकते हैं EditText
। आपके उदाहरण में:
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
return true;
}
return false;
}
});
अब मेरे उदाहरण में मेरे पास android:imeOptions="actionUnspecified"
विशेषता थी । यह तब उपयोगी होता है जब आप किसी उपयोगकर्ता को लॉगिन कुंजी दबाने की कोशिश करना चाहते हैं। अपनी गतिविधि में, आप इस टैग का पता लगा सकते हैं और फिर लॉगिन का प्रयास कर सकते हैं:
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});