Intereting Posts
Как подавить уведомление о блокировке экрана в Android 5 (Lollipop), но разрешить его в области уведомлений? Как узнать, выполнила ли Proguard свою работу Как установить тот же Android-приложение .apk два раза на одном устройстве? Драйвер файловой системы пользовательского пространства Android на неуправляемом устройстве? IllegalArgumentException: Сервис не зарегистрирован: Как открыть другое действие по элементу recyclerView onclick Разница между cocos2d-x и cocos2d-js Задняя клавиша на программном добавлении Фрагмент приводит к пустой контейнеру Android / FBReaderJ / gen уже существует, но не является исходной папкой. Преобразовать в исходную папку или переименовать ее 12 Мб текстовых данных скачать с url и сохранить на SD-карту … Ошибка памяти кучи. Любое решение? Ошибка регистрации зарегистрированного получателя? Android 3.1 USB-хост – BroadcastReceiver не получает USB_DEVICE_ATTACHED Звоните на getLayoutInflater () в местах, где нет активности Съемка с пользовательской камеры растягивается при сохранении в ImageView MPAndroidChart устанавливает вертикальную линию центра

Как изменить цвет фона вокруг диалогового окна?

Я создаю пользовательский DialogFragment . В макете диалога установлено значение my_dialog.xml , но как изменить цвет в диалоговом окне (прозрачный серый)?

Введите описание изображения здесь

my_dialog.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > <TextView android:id="@+id/hello" android:layout_width="100dp" android:layout_height="100dp" android:background="@android:color/holo_orange_light" android:gravity="center" android:text="hello" /> </RelativeLayout> 

MyDialogFragment.java

 public class MyDialogFragment extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.my_dialog, container); getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); return view; } } 

Solutions Collecting From Web of "Как изменить цвет фона вокруг диалогового окна?"

Мне пришлось установить android:windowIsFloating to false и android:windowBackground для моего пользовательского цвета в стиле диалога:

styles.xml

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="MyDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowBackground">@color/orange_transparent</item> <item name="android:windowIsFloating">false</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTitleStyle">@null</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:gravity">center</item> </style> </resources> 

MyDialogFragment

 public class MyDialogFragment extends DialogFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_TITLE, R.style.MyDialog); } } 

Мне нужен прозрачный фон для моего DialogFragment , и в коде это отлично работает:

 @Override public void onStart() { super.onStart(); Window window = getDialog().getWindow(); window.setBackgroundDrawableResource(android.R.color.transparent); } 

Конечно, вы можете указать любой цвет или Drawable используя setBackgroundDrawable() или setBackgroundDrawableResource() .

Это работает хотя бы в onStart() , но не в onCreate() , и не обязательно в onCreateView() , кажется .

Тем не менее, в большинстве случаев, возможно, более чисто сделать это в XML, используя стили в следующих строках:

 <style name="MyDialogStyle" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> </style> 

Я нашел, что мне просто нужно было сделать это:

 <style name="MyDialog" parent="@android:style/Theme.Dialog"> <!-- other attributes --> <item name="android:backgroundDimEnabled">false</item> </style> 

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

  • SetBackgroundDrawable для Color.TRANSPARENT
  • SetDimAmount 0

См. Пример кода здесь:

 public class TextEditor extends DialogFragment { public TextEditor () { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_text_editor, container); // make dialog itself transparent getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // remove background dim getDialog().getWindow().setDimAmount(0); //[add more custom code here...] return view; } } 

Overriding onCreate и настройка стиля должны работать.

 @Override public void onCreate(Bundle savedInstance){ super.onCreate(savedInstance); setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent); } 

Те, кто использует AlertDialog builder в ' onCreateDialog ' вместо ' onCreateView ', могут назначать тему, такую ​​как следующий код. Полный набор тем можно найти в R.style . Не забывайте, что некоторые из них поддерживались недавно и недоступны на старых телефонах устройств.

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Translucent); View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_album, null); builder.setView(view); return builder.create(); } 

Измените свой текстовый Background на XML я только что отредактировал ваш код, замените его на свой

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > <TextView android:id="@+id/hello" android:layout_width="100dp" android:layout_height="100dp" android:gravity="center" android:text="hello" /> 

Потому что вы TextView высоту и ширину TextView 100dp. И установите фон для него, который заполнит весь диалог. Так как ваш основной макет – wrap_content. Пожалуйста, примите ответ, если это вам помогло.
Изменить: чтобы изменить background просто добавьте его в макет или в текстовый android:background="#232323" вы можете изменить эти цифры на любой цвет, который вам нравится. Или вы можете установить фон из drawable как android:background="@drawable/yourpicturename"

Ответ Юля был почти хорош для меня. Но, похоже, это не работает при использовании AlertDialog.Builder.

Мне нужно было установить стиль здесь:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyDialog );