- Android Custom Dialog With Transparent Background | Background Color
- Creating Transparent Background
- Step 1. Making Colors
- Step 2. XML files for dialog
- Second file
- Third File
- Step 3. Last Main Changes
- Как установить фон диалогового окна прозрачным, не затрагивая его поля
- 6 ответов
- API >= 23
- Диалог с прозрачным фоном в Android
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
- Ответ 17
- Ответ 18
- Диалог с прозрачным фоном в Android
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
- Ответ 17
- Ответ 18
Android Custom Dialog With Transparent Background | Background Color
This article is on Android Custom Dialog With Transparent Background Color Example.
You will learn to make custom dialog with transparent background.
We will also learn to change background color with different level of transparency.
For this purpose, we will make separate XML layout files for every dialog.
One easy trick for transparent background is to make the root layout of XML file as a transparent.
Creating Transparent Background
Step 1. Making Colors
First of all, we will define various colors with different opacity.
Write down the below lines in res->values->colors.xml file.
Here, colorTransparent and redTransparent are the colors we will use in dialog background.
See the below image,
Select color and opacity
- Above Image shows us how to define color with different opacity.
- For this, open your colors.xml file.
- Here, you will see squares filled with colors define in tags. These squares are at the left side of the tags.
- Click on that square. System will open a dialog window like the above image.
- In this window, there two horizontal sliders (A & B as per the above image) .
- With the help of the A, you can set the color and by using B, you can set the opacity of that color.
- Lower the opacity, more transparency is there.
Step 2. XML files for dialog
Before making drawable files, we need to add two images in the drawable folder.
After downloading images from above link, add these two images in res->drawable folder.
For every custom dialog, we will make separate XML drawable files.
So, create a new XML file under res->drawable directory.
Set the name of the file as dialog_transparent.xml and add the following code
- Above code will generate custom dialog with fully transparent background.
- The parent element of this file is RelativeLayout.
- I have set the background color of this relativelayout as the fully transparent with opacity 67.
- Elements other than relativelayout will create attractive custom dialog with twitter image, text and two buttons.
Second file
Now under res->drawable directory, make another XML file and give it a name dialog_second.xml
Code structure for dialog_second.xml is as the below
- It has the same dialog structure as the previous one. A twitter image, text and two buttons.
- But I have set the background of square in which twitter image, text and two buttons are present, as the WHITE color.
- For real view of this dialog, you can see the output video present at the bottom end of this tutorial.
Third File
Under the same directory, prepare another XML file named third_dialog.xml
Code structure for third_dialog.xml is as the following
- This file also create custom dialog with same elements.
- But it will hold the red background with opacity 127.
- I have set the red color with opacity 127 at the root element of this file, which is RelativeLayout.
Step 3. Last Main Changes
Now it is time to make final changes in this project.
Copy the below coding lines in your activity_main.xml file
- I have taken three buttons in this file.
- Every buttons will create custom dialog using different drawable XML files which we have just created in step 2.
Code snippet for MainActivity.java is as the following
Consider the below coding lines
- There are three button clicks in the above snippet.
- Compiler will call showDialog() method when the user clicks the first button.
- It will call showDialogSecond() method when the user clicks the second button.
- On the click of third button, compiler execute the showDialogThird() method.
Code For showDialog() method is as the below
- Compiler will create the object of the Dialog class.
- Then it will set the content view as the dialog_transparent.xml file.
- So this custom dialog will have the view created by the dialog_transparent.xml file.
- Then compiler will set the text in the textview of the dialog.
- After this, compiler will set the button clicks for OK and CANCLE button.
- Finally, dialog.show() method will create the dialog with transparent background.
Similarly, showDialogSecond() method and showDialogThird() method will create dialogs.
- showDialogSecond() method will inflate dialog_second.xml file and showDialogThird() method will inflate third_dialog.xml file.
Thus, you have seen that creating a custom dialog with transparent background is not a complex task if you make it with proper XML file.
Transparent background with any color is also possible with little trick and tips.
Источник
Как установить фон диалогового окна прозрачным, не затрагивая его поля
В настоящее время у меня есть следующий диалог, в котором я выполню анимацию expand/ collapse для его элементов.
этот диалог создается с помощью следующего кода
однако, когда анимация выполняется, вот побочный эффект.
обратите внимание, что нежелательная дополнительная белая область в диалоговом окне после анимации не вызвана нашим пользовательским представлением. Это системное окно белый фон самого окна.
Я склонен сделать фон системного окна диалога прозрачным.
хотя нежелательный белый фон больше не отображается, исходное поле диалога также исчезло. (Ширина диалога теперь полная ширина экрана)
как я могу сделать его прозрачным, не затрагивая его маржу?
6 ответов
есть довольно простой способ сделать это:
вам нужно «изменить» Drawable что используется в качестве фона Dialog . Такие Dialogs использовать InsetDrawable в качестве фона.
API >= 23
к сожалению, только SDK для API>=23 позволяет получить источник Drawable обернутый InsetDrawable ( getDrawable() метод). С этим вы можете делать все, что хотите-например, изменить цвет на что-то совершенно другое (например, RED или что-то). Если вы используете этот подход, помните, что обернутом Drawable это GradientDrawable , а не ColorDrawable !
для более низких API ваши («элегантные») опции очень ограничены.
к счастью, вам не нужно менять цвет на какое-то сумасшедшее значение, вам просто нужно изменить его на TRANSPARENT . Для этого вы можете использовать setAlpha(. ) метод on InsetDrawable .
редактировать (в результате из Чок Янь Чэн комментарии):
или вы можете пропустить кастинг InsetDrawable и получить тот же результат. Просто помните, что это вызовет alpha быть измененным на , а не Drawable это обернуто InsetDrawable .
попробуйте ниже тему:
попробуйте ниже кода, чтобы применить тему к AlertDialog.Builder :
Я надеюсь помочь вам !
фоновое изображение abc_popup_background_mtrl_mult который является частью библиотеки compat содержит уже поле в информации изображения.
вот почему поле уходит, когда вы удаляете фоновое изображение. Я настоятельно рекомендую не использовать ViewTreeObserver , он будет вызываться несколько раз и может вызвать проблемы с производительностью. Лучше работать с размером экрана:
ваша проблема правильно в макете попробуйте проверить представления с иерархией зрителя.
просто добавьте эту строку после показа диалогового окна. Я бы предпочел использовать Dialog instedof с помощью AlertDialog
давайте начнем с рекомендации Google, в которой говорится использовать DialogFragment вместо простого диалога.
@rekire прав, что поля, установленные drawable, в дальнейшем он устанавливается либо 9 патч или программно в зависимости от темы.
таким образом, вы можете установить заполнение в представление содержимого или создать диалог с помощью DialogFragment вот пример, который изменяет высоту диалога на основе его содержимого, и обратите внимание, что вам не нужно использовать tree observer, который упомянутый выше может вызвать проблемы с производительностью.
так пример
Примечание: я завернул все в вид прокрутки и установить заполнение вы можете пропустить его, если хотите.
и, наконец, вы можете показать свой диалог с этим куском кода
Я не буду вдаваться в подробности, почему фрагмент диалог лучше, но одна вещь ясно, что вы можете инкапсулировать логику для него и иметь отдельный класс. Надеюсь, это решит вашу проблему.
то, что должно быть, то, что вы не показали, я не уверен, что это то, что вы не знали, или это уже есть, поэтому вы не думаете, что это необходимо показать.
установите тему в диалог, который помещает всю активность в один диалог. Я не думаю, что ты это сделал, иначе AlertDialog не будет.
Я немного потерял ваше описание, но есть немного XML, который намного мощнее, чем 9-патч, и использование RelativeLayout поможет.
Источник
Диалог с прозрачным фоном в Android
Как удалить черный фон из диалогового окна в Android. На рисунке показана проблема.
ОТВЕТЫ
Ответ 1
Добавьте этот код
Или вместо этого:
Ответ 2
использовать в java
Я надеюсь помочь вам!
Ответ 3
Я столкнулся с более простой проблемой, и в решении, которое я придумал, была применена прозрачная тестовая ТЕМА. Напишите эти строки в ваших стилях
И затем добавьте
в вашем основном файле манифеста внутри блока активности диалога.
Плюс в вашем диалоговом действии XML-набор
Ответ 4
Каким-то образом решение Zacharias не сработало для меня, поэтому я использовал следующую тему для решения этой проблемы.
Можно установить эту тему для диалога, как показано ниже
Ответ 5
Вы можете использовать:
. Далее следует документ:
Ответ 6
Всплывающее диалоговое окно заполняет черный цвет фона по умолчанию или цвет темы, поэтому вам нужно установить TRANSPARENT фон в диалоге. Попробуйте следующий код: —
Ответ 7
Одна проблема, которую я нашел со всеми существующими ответами, заключается в том, что поля не сохраняются. Это связано с тем, что все они переопределяют атрибут android:windowBackground , который отвечает за поля, с сплошным цветом. Тем не менее, я сделал некоторые копания в Android SDK и нашел фоновый рисунок фона по умолчанию, и немного изменил его, чтобы разрешить прозрачные диалоги.
Сначала скопируйте /platforms/android -22/data/res/drawable/dialog_background_material.xml в свой проект. Или просто скопируйте эти строки в новый файл:
Обратите внимание, что для параметра android:color установлено значение ?attr/colorBackground . Это стандартный серый/белый цвет по умолчанию. Чтобы цвет, определенный в android:background в вашем пользовательском стиле, был прозрачным и отображал прозрачность, все, что нам нужно сделать, это изменить ?attr/colorBackground на @android:color/transparent . Теперь это будет выглядеть так:
После этого перейдите к теме и добавьте следующее:
Обязательно замените newly_created_background_name на фактическое имя только что созданного файла и замените some_transparent_color на необходимый прозрачный фон.
После этого все, что нам нужно сделать, это установить тему. Используйте это при создании AlertDialog.Builder :
Затем просто создайте, создайте и покажите диалог как обычно!
Ответ 8
То же решение, что и zGnep, но с помощью xml:
Ответ 9
Попробуйте это в своем коде:
он будет определенно работать. в моем случае. мой frend
Ответ 10
Это то, что я сделал для достижения прозрачности с помощью AlertDialog.
Создан пользовательский стиль:
И затем создайте диалог с помощью:
Ответ 11
если вы хотите уничтожить темный фон диалога, используйте это
Ответ 12
используйте этот код, он работает со мной:
Ответ 13
Внимание:
не используйте конструктор для изменения фона
При использовании Dialog.builder — в нем нет опции getwindow().
Ответ 14
Установите эти коды стиля в стиле
И просто измените ложь на истину ниже линии
Это затемнит ваш фон.
Ответ 15
Это мой путь, вы можете попробовать!
Ответ 16
В моем случае решение работает следующим образом:
И дополнительно в Xml настраиваемого диалога:
Ответ 17
Если вы расширили класс DialogFrament , вы можете установить тему с помощью:
А затем создайте собственную тему в своем файле styles.xml (параметры см. В ответе @LongLv)
Не забудьте добавить true если вы хотите, чтобы диалог закрывался, если пользователь прикасается к окну.
Ответ 18
Для тех, кто использует настраиваемое диалоговое окно с настраиваемым классом, вам нужно изменить прозрачность в классе, добавив эту строку в onCreate():
Источник
Диалог с прозрачным фоном в Android
Как удалить черный фон из диалогового окна в Android. На рисунке показана проблема.
ОТВЕТЫ
Ответ 1
Добавьте этот код
Или вместо этого:
Ответ 2
использовать в java
Я надеюсь помочь вам!
Ответ 3
Я столкнулся с более простой проблемой, и в решении, которое я придумал, была применена прозрачная тестовая ТЕМА. Напишите эти строки в ваших стилях
И затем добавьте
в вашем основном файле манифеста внутри блока активности диалога.
Плюс в вашем диалоговом действии XML-набор
Ответ 4
Каким-то образом решение Zacharias не сработало для меня, поэтому я использовал следующую тему для решения этой проблемы.
Можно установить эту тему для диалога, как показано ниже
Ответ 5
Вы можете использовать:
. Далее следует документ:
Ответ 6
Всплывающее диалоговое окно заполняет черный цвет фона по умолчанию или цвет темы, поэтому вам нужно установить TRANSPARENT фон в диалоге. Попробуйте следующий код: —
Ответ 7
Одна проблема, которую я нашел со всеми существующими ответами, заключается в том, что поля не сохраняются. Это связано с тем, что все они переопределяют атрибут android:windowBackground , который отвечает за поля, с сплошным цветом. Тем не менее, я сделал некоторые копания в Android SDK и нашел фоновый рисунок фона по умолчанию, и немного изменил его, чтобы разрешить прозрачные диалоги.
Сначала скопируйте /platforms/android -22/data/res/drawable/dialog_background_material.xml в свой проект. Или просто скопируйте эти строки в новый файл:
Обратите внимание, что для параметра android:color установлено значение ?attr/colorBackground . Это стандартный серый/белый цвет по умолчанию. Чтобы цвет, определенный в android:background в вашем пользовательском стиле, был прозрачным и отображал прозрачность, все, что нам нужно сделать, это изменить ?attr/colorBackground на @android:color/transparent . Теперь это будет выглядеть так:
После этого перейдите к теме и добавьте следующее:
Обязательно замените newly_created_background_name на фактическое имя только что созданного файла и замените some_transparent_color на необходимый прозрачный фон.
После этого все, что нам нужно сделать, это установить тему. Используйте это при создании AlertDialog.Builder :
Затем просто создайте, создайте и покажите диалог как обычно!
Ответ 8
То же решение, что и zGnep, но с помощью xml:
Ответ 9
Попробуйте это в своем коде:
он будет определенно работать. в моем случае. мой frend
Ответ 10
Это то, что я сделал для достижения прозрачности с помощью AlertDialog.
Создан пользовательский стиль:
И затем создайте диалог с помощью:
Ответ 11
если вы хотите уничтожить темный фон диалога, используйте это
Ответ 12
используйте этот код, он работает со мной:
Ответ 13
Внимание:
не используйте конструктор для изменения фона
При использовании Dialog.builder — в нем нет опции getwindow().
Ответ 14
Установите эти коды стиля в стиле
И просто измените ложь на истину ниже линии
Это затемнит ваш фон.
Ответ 15
Это мой путь, вы можете попробовать!
Ответ 16
В моем случае решение работает следующим образом:
И дополнительно в Xml настраиваемого диалога:
Ответ 17
Если вы расширили класс DialogFrament , вы можете установить тему с помощью:
А затем создайте собственную тему в своем файле styles.xml (параметры см. В ответе @LongLv)
Не забудьте добавить true если вы хотите, чтобы диалог закрывался, если пользователь прикасается к окну.
Ответ 18
Для тех, кто использует настраиваемое диалоговое окно с настраиваемым классом, вам нужно изменить прозрачность в классе, добавив эту строку в onCreate():
Источник