نشاط Android كمربع حوار
-
22-09-2019 - |
سؤال
لدي نشاط اسمه whereActity
التي لديها حوار الطفل كذلك. الآن ، أريد أن أعرض هذا النشاط كحوار لنشاط آخر.
كيف أقوم بذلك؟
المحلول
لبدء النشاط كمربع حوار قمت بتعريفه مثل هذا AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
استخدم هذه الخاصية داخل الخاص بك activity
علامة لتجنب ظهور مربع الحوار الخاص بك في قائمة التطبيقات المستخدمة مؤخرًا
android:excludeFromRecents="true"
إذا كنت ترغب في إيقاف حوار / نشاطك من تدميره عندما ينقر المستخدم خارج مربع الحوار:
بعد، بعدما setContentView()
في الخاص بك Activity
استعمال:
this.setFinishOnTouchOutside(false);
الآن عندما أتصل startActivity()
يعرض كمربع حوار ، مع عرض النشاط السابق عندما يضغط المستخدم على زر العودة.
لاحظ أنه إذا كنت تستخدم ActionBarActivity
(أو سمة AppCompat) ، ستحتاج إلى استخدامها @style/Theme.AppCompat.Dialog
في حين أن.
نصائح أخرى
استخدم هذا الرمز بحيث لن يتم إغلاق نشاط الحوار عندما يمس المستخدم خارج مربع الحوار:
this.setFinishOnTouchOutside(false);
يتطلب مستوى API 11
يمكنك تحديد هذا النمط في القيم/الأنماط.
<style name="Theme.UserDialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@drawable/trans</item>
</style>
واستخدامه AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
1 - يمكنك استخدام نفس النشاط مثل كل من الحوار وشاشة ملء الشاشة ، ديناميكيًا:
مكالمة setTheme(android.R.style.Theme_Dialog)
قبل الاتصال setContentView(...)
و super.oncreate()
في نشاطك.
2 - إذا كنت لا تخطط لتغيير نمط موضوع النشاط الذي يمكنك استخدامه
<activity android:theme="@android:style/Theme.Dialog" />
(كما ذكرها faisal خان)
إذا كنت بحاجة إلى إصدار AppCompat
style.xml
<!-- Base application theme. -->
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
yoursmanifest.xml
<activity
android:name=".MyActivity"
android:label="@string/title"
android:theme="@style/AppDialogTheme">
</activity>
إذا تم تقديم نشاطك كمربع حوار ، فما عليك سوى إضافة زر إلى XML لنشاطك ،
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
ثم قم بإرفاق مستمع انقر في رمز Java في نشاطك. في المستمع ، ببساطة اتصل finish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
يجب أن يرفض الحوار الخاص بك ، وإعادتك إلى نشاط الاتصال.
إذا كنت ترغب في إزالة رأس النشاط وتقديم عرض مخصص لحوار الحوار ، أضف ما يلي إلى كتلة النشاط الخاصة بك
android:theme="@style/Base.Theme.AppCompat.Dialog"
وتصميم Activity_layout مع العرض المطلوب
اضبط السمة في ملف Android الخاص بك.
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
وتعيين حالة الحوار على اللمس حتى النهاية.
this.setFinishOnTouchOutside(false);