যদিও বেশিরভাগ লোকেরা সরাসরি প্রশ্নের উত্তর দিয়েছিল, আমি এর পিছনের ধারণাটি আরও বিস্তারিতভাবে জানাতে চেয়েছিলাম। প্রথমত, আমি যখন ডিফল্ট লগইন ক্রিয়াকলাপ তৈরি করি তখন আমি আইএমইয়ের দৃষ্টি আকর্ষণ করি। এটি আমার জন্য কিছু কোড উত্পন্ন করেছে যার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
<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"/>
আপনার ইতিমধ্যে ইনপুট টাইপ বৈশিষ্ট্যের সাথে পরিচিত হওয়া উচিত। এটি কেবলমাত্র ইমেল ঠিকানা, পাসওয়ার্ড বা ফোন নম্বর যেমন প্রত্যাশিত পাঠ্যের ধরণের অ্যান্ড্রয়েডকে অবহিত করে। সম্ভাব্য মানগুলির সম্পূর্ণ তালিকা এখানে পাওয়া যাবে ।
এটি অবশ্য এটিই ছিল এমন বৈশিষ্ট্য imeOptions="actionUnspecified"
যা আমি এর উদ্দেশ্য বুঝতে পারি নি। অ্যান্ড্রয়েড আপনাকে কীবোর্ডের সাথে ইন্টারঅ্যাক্ট করতে দেয় যা স্ক্রিনের নীচে থেকে পপ আপ হয় যখন ব্যবহার করে পাঠ্যটি নির্বাচন করা হয় InputMethodManager
। কীবোর্ডের নীচের কোণায়, একটি বোতাম রয়েছে, এটি বর্তমান পাঠ্য ক্ষেত্রের উপর নির্ভর করে সাধারণত "পরবর্তী" বা "সম্পন্ন" বলে। অ্যান্ড্রয়েড আপনাকে এটি ব্যবহার করে কাস্টমাইজ করতে দেয় android:imeOptions
। আপনি একটি "প্রেরণ" বাটন বা "পরবর্তী" বোতামটি নির্দিষ্ট করতে পারেন। সম্পূর্ণ তালিকা এখানে পাওয়া যাবে ।
এটির TextView.OnEditorActionListener
সাহায্যে আপনি EditText
উপাদানটির জন্য একটি নির্ধারণ করে ক্রিয়া বোতামে টিপুন শুনতে পারেন listen যেমন আপনার উদাহরণ হিসাবে:
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;
}
});