سؤال

لدي نشاط اسمه whereActity التي لديها حوار الطفل كذلك. الآن ، أريد أن أعرض هذا النشاط كحوار لنشاط آخر.

كيف أقوم بذلك؟

enter image description here

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

المحلول

لبدء النشاط كمربع حوار قمت بتعريفه مثل هذا 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top