Вызов диалогового окна Android без его исчезновения
У меня есть это приятное диалоговое представление. Я установил свой класс 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
. Он устанавливает свой контентный вид в формат, описанный выше.
Я думаю, что я делаю все правильно, просто не уверен, как добавить этот стиль, чтобы я не мог угаснуть фон.
Вторичный вопрос: можете ли вы получить новый внешний вид в своем диалоговом окне (например, используя изображение или значок с текстом там), используя Темы?
Ответы
Ответ 1
Создайте файл 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">
Ответ 2
Вы также можете удалить эффект dim с помощью кода со следующим:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Ответ 3
Создайте собственный стиль и поместите его в папку значений
<?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);
Ответ 4
Для отображения диалога типа 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">