كيفية إيقاف لوحة مفاتيح أندرويد لينة من أي وقت مضى من أي وقت مضى تطبيقي بالكامل

StackOverflow https://stackoverflow.com/questions/2429595

  •  19-09-2019
  •  | 
  •  

سؤال

أقوم بتطوير تطبيق على جهاز الأجهزة يحتوي على لوحة مفاتيح أجهزة مدمجة لا تنزلق، لذلك مرئيا دائما (مثل BlackBerry). لذلك، لا أريد عرض لوحة المفاتيح الناعمة لتطبيقي بالكامل. أنا على علم آخر حتى السؤال هذا يعطي خطوط التعليمات البرمجية التالية:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

لكنني لا أعرف من أين أضع هذا الرمز لإخفاء لوحة المفاتيح الناعمة في جميع الأماكن التي ربما تكون قد تظهر في نشاطي. لقد حاولت إضافة الكود إلى Activity.onUserInteraction ولكن دون جدوى. يبدو أن لوحة المفاتيح تظهر بعد ال onUserInteraction ينفذ.

حاولت أيضا إضافة ما يلي إلى بلدي <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

لوحة المفاتيح لينة لا تزال تظهر.

هل كانت مفيدة؟

المحلول

يجب ألا يفعل طلبك أي شيء. يجب أن تحتوي البرنامج الثابت للجهاز على تكوين يمنع لوحة المفاتيح الناعمة بناء على لوحة مفاتيح الأجهزة المرئية، تماما مثل جهاز Android آخر يحتوي على لوحة مفاتيح جهاز. إذا لم يحدث ذلك، تحدث إلى صانع الأجهزة ومعرفة ما إذا كانوا يخططون لمعالجة هذا.

نصائح أخرى

حل سهل عرض غدا:

أود إنشاء IME جديد مع عرض فارغ. فيما يلي مشروعان بمثابة مشاريع لكي تنظر إلى بعض الكود.

إذا كنت تريد معرفة المزيد عن طرق الإدخال، فانتقل إلى إنشاء طريقة الإدخال.

إذا كان Edittext لديه Inputtype من 0، فلن ينبثق لوحة المفاتيح اللينة عند تحديد ذلك Edittext.

EDITTEXT EDITTEXT = findViewbyid (r.id.edit_text)؛ EDITTEXT.SETENTTYPE (0)؛

يحتاج هذا بالطبع إلى القيام به لجميع EDITTEXTS في التطبيق الخاص بك، أو يمكنك دائما تصنيف EDITTEXT SUPCLASS وتعيين نوع الإدخال إلى 0 في منشئك.

لن يقوم إعداد المعلمة XML INPUTTYPE بعدم القيام به، لأن ذلك يتوافق مع مكالمة بطريقة setrawinputtype، والتي لا تقوم بإزالة KeyListener.

حلها عن طريق تجاوز طريقة OncheckistExtitor في Edittext A-Bit مخصص.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

حيث لديك أي وقت مضى تحرير النص، ضع هذا الرمز ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top