Как я могу показать свою активность в виде диалога в Android? - PullRequest
8 голосов
/ 05 января 2012

Я работаю над своим первым приложением для Android и пытаюсь стилизовать свою деятельность.В конечном счете, я хотел бы, чтобы моя деятельность выглядела так же, как диалог.Я присвоил всем своим действиям стиль Theme.Dialog, используя следующий код в моем AndroidManifest.xml:

<application
    android:icon="@drawable/group"
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Dialog">
</application>

Это придает моим действиям "плавающий" вид и границы диалога, но не стилизованныйзаглавие.Заголовок имеет тот же цвет и внешний вид, что и общий фон диалога, а не фон и заголовок «заголовка», как в «реальном» диалоге.Обратите внимание, что в обоих примерах заголовок имеет красивую рамку, а во втором - градиентный фон.

Есть ли способ убедиться, что заголовок в моей деятельности каким-то образом наследует заголовок системного диалога, чтобы эффективно копировать внешний вид диалога для моей деятельности - в дополнение к границе и "float", которые идут сстиль Theme.Dialog?

Обратите внимание, что я не хочу называть свою деятельность диалогом другого, я просто хочу, чтобы она LOOK была похожа на дилаог,даже когда он загружен в ответ на намерение согласно фильтрам намерений моего манифеста.

Dialog Example 1

Dialog Example 2

ADD: Может быть, есть какой-нибудь способ, которым я могу заставить свою активность, когда она вращается в onCreate(), вызвать какой-то метод, чтобы превратить себя в настоящий диалог?Имейте в виду, что деятельность все еще должна быть способной реагировать на намерения системы.

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Тема диалога может быть настроена, указав ее в качестве родительского, в файле styles.xml

<resources>
<style name="MyDialogTheme" parent="android:Theme.Dialog">
            <item name="android:background">#ffdddddd</item>
</style>
</resources>

Если вы задаете другой цвет фона настраиваемого стиля диалога и макета (добавьте android:background="#ffffffff" взаголовок макета в вашем файле main.xml), он будет выглядеть как системный диалог.

Надеюсь, это поможет.

Пропущено упоминание: обратитесь к настраиваемой теме в манифесте, как показано ниже:

android:theme="@style/MyDialogTheme"
2 голосов
/ 12 января 2012

Решив посмотреть что я хотел сделать вместо как это сделать конкретно, я нашел другой подход.Я снова задал вопрос, ища идеи подхода вместо идей реализации здесь .GalDude33 помог мне понять, как добиться того, чего я хотел.Его ответом был ответ на этот вопрос.

2 голосов
/ 05 января 2012

Вы можете сделать следующим образом ..

создайте макет для вашего диалога и установите его, как показано ниже.

Dialog mDialog = new Dialog(MainScreen.this,android.R.style.Theme_Translucent_NoTitleBar);

mDialog .requestWindowFeature(Window.FEATURE_NO_TITLE);

mDialog .setContentView(R.layout.dialoglayout);
mDialog .show();
...