Вызов диалогового окна Android без исчезновения фона - PullRequest
33 голосов
/ 25 июня 2010

У меня есть это прекрасное диалоговое окно. Я установил свой класс 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>

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

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

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

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

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

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

Ответы [ 4 ]

163 голосов
/ 22 апреля 2011

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

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
32 голосов
/ 25 июня 2010

Создайте файл 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">
5 голосов
/ 22 ноября 2012

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

<?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);
1 голос
/ 28 января 2016

Для отображения диалогового окна, например 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">
...