2010-06-24 3 views
27

У меня есть это хороший диалоговый я установить свой класс UserInputDialog к:Вызов андроид диалога без его выцветания фона

<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

     <TextView 
     android:id="@+id/nameMessage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="What is your name Captain?" 
     > 
     </TextView> 
     <EditText 
     android:id="@+id/nameEditText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     > 
     </EditText> 
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"> 
    <Button 
     android:id="@+id/okButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="OK"> 
     </Button> 
     <Button android:id="@+id/cancelButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Cancel"> 
     </Button>    
    </LinearLayout> 
</LinearLayout> 

Я хочу, чтобы мой диалог, чтобы показать, но для фона, чтобы не исчезать. Это возможно? Потому что представление, которое вызывает это диалоговое окно, имеет фон neato, я бы хотел, чтобы его отображали в качестве фона в диалоговом окне.

Я нашел в Интернете:

<style name="doNotDim" parent="@android:style/Theme.Dialog"> 
    <item name="android:backgroundDimAmount">0</item> 
</style > 

, но не знаете, как применить это к диалогу мой? У меня есть класс под названием public class UserInputDialog extends Dialog implements OnClickListener. Он устанавливает свой контентный вид на макет, описанный выше.

Я думаю, что я делаю это все правильно, просто не уверен, как добавить этот стиль, чтобы я не мог угаснуть фон.

Вторичный вопрос: можете ли вы получить новый внешний вид в своем диалоговом окне (например, используя изображение или значок с текстом там), используя Темы?

ответ

27

Создайте файл res/values ​​/ styles.xml и добавьте его в него.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.DoNotDim" parent="android:Theme"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

И примените тему к своей деятельности.

<activity android:name=".SampleActivity" android:theme="@style/Theme.DoNotDim"> 
+0

воли, которые делают каждый диалог, который я называю от этой деятельности использовать тот же стиль? – Codejoy

+0

Фактически это настройка стиля в Activity, что означает, что активность не будет тускнеть. Не имеет никакого отношения к диалогу. –

+0

Очень полезно, спасибо –

143

Вы также можете удалить тусклый эффект с помощью кода со следующим:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
+2

Это более чистый и лаконичный, должен быть принятым ответом. –

+0

работает для нижнего экранаДиалог тоже ....... – adafrwefsefr

+0

Отличный ответ !!! Это должно быть принято. –

4

Создайте собственный стиль и поместить его в папку ваши ценности

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="YourCustomStyle" parent="android:Theme"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

Чтобы задать стиль индивидуальный диалог, который вы можете использовать

Dialog dialog = new Dialog(context, R.style.YourCustomStyle); 
0

Для отображения диалогового окна, например TrueCaller сделать это:

styles.xml файл.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="myBackgroundStyle" parent="android:Theme.Dialog"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

В AndroidManifest.xml сделать это:

<activity android:name=".SampleActivity" android:theme="@style/myBackgroundStyle"> 
Смежные вопросы