سؤال

لدي تطبيق يحتوي على تخطيط أساسي للصورة (يتم تثبيته كصورة)، ويوجد مكان واحد لكتابة النص.أرغب في التشغيل كنافذة منبثقة في اتجاه أفقي مع ضبابية صورة الخلفية.أعلم أن هناك أداة منبثقة، ولكن أي أفكار لتدوير مربع تحرير النص ستكون رائعة.يمكن أيضًا تدويره في عرض عمودي (مربع النص فقط) عندما يتم سحب لوحة المفاتيح للخارج، كما هو الحال مع عرض شاشة جديدة مع مربع النص على شريحة لوحة المفاتيح.

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

المحلول

الحل الأسهل لمشكلتك هو عرض ملفك EditText ضمن منفصلة dialog نشاط ذو طابع خاص تقوم بتشغيله من داخل نشاطك الرئيسي (الثابت في الصورة).

لا ينبغي أن يكون اتجاه نشاط EditText ثابتًا، لذا سيتم تدويره كما تتوقع عند تحريك لوحة المفاتيح للخارج.

إنشاء نشاط إدخال النص

قم بإنشاء نشاط جديد يحتوي فقط على طريقة عرض EditText وأي شيء آخر تريد تضمينه (ربما أزرار موافق/إلغاء وربما تسمية؟).ضمن البيان، قم بتعيين موضوعه على Theme.Dialog.

<activity android:name="TextEntryActivity" 
          android:label="My Activity" 
          android:theme="@android:style/Theme.Dialog"/>

يتم تعتيم الأنشطة أو تعتيمها خلف مربع الحوار عن طريق تعديل خصائص نافذة النشاط الأمامي (مربع حوار إدخال النص).ضمن استخدام طريقة onCreate getWindow().setFlags لتطبيق التمويه على أي أنشطة في الخلفية.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
                     WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

إطلاق وقراءة القيم المدخلة من نشاط إدخال النص

يستخدم startActivityForResult لبدء نشاط إدخال النص.ضمن مكالمة النشاط تلك setResult لإرجاع السلسلة النصية التي تم إدخالها ضمن الهدف الذي تم إرجاعه باستخدام التقنيات الموضحة في هذا المشنور.

تجاوز onActivityResult طريقة للاستماع للنتيجة من النشاط الفرعي.

تشغيل التشغيل على لوحة المفاتيح المكشوفة

يمكنك تشغيل نشاط إدخال النص وقتما تشاء، ولكن إذا كنت تريد عرضه دائمًا عندما تكون لوحة المفاتيح مكشوفة، فيمكنك التقاط هذا الحدث بوضوح.

ابدأ بإضافة android:configChanges السمة إلى إدخال بيان النشاط العمودي.يجب أن تكون مسجلة للاستماع إليها keyboardHidden.

android:configChanges="keyboardHidden"

ضمن هذا النشاط، قم بالتجاوز onConfigurationChanged لبدء نشاط إدخال النص.

@Override
public void onConfigurationChanged(Configuration newConfig) {  
  Intent i = new Intent(this,TextEntryActivity.class);    
  startActivityForResult(i, STATIC_INTEGER_VALUE);
}

قد ترغب في التحقق للتأكد من أن لوحة المفاتيح مكشوفة (بدلاً من إخفائها) باستخدام متغير newConfig قبل بدء نشاط إدخال النص.

قد ترغب أيضًا في استخدام نفس الأسلوب للعودة تلقائيًا من نشاط إدخال النص عندما تكون لوحة المفاتيح مخفية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top