Я изменил цвет заголовка AlertDialog с помощью этой команды
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Но я хочу изменить цвет строки, которая появляется под заголовком; Как мне это сделать ?
Примечание: я не хочу использовать собственный макет
android
android-alertdialog
Мохаммед Субхи Шейх Куруш
источник
источник
Ответы:
К сожалению, это не очень простая задача. В своем ответе я подробно описываю, как настроить цвет a
ListSeparator
, просто проверив родительский стиль, используемый Android, создав новое изображение и создав новый стиль на основе оригинала. К сожалению, в отличие отListSeparator
стиля,AlertDialog
темы являются внутренними, и поэтому на них нельзя ссылаться как на родительские стили. Нет простого способа изменить эту маленькую синюю линию! Таким образом, вам нужно прибегнуть к созданию настраиваемых диалогов.Если это не ваша чашка чая ... не сдавайтесь! Я был очень обеспокоен тем, что не было простого способа сделать это, поэтому я создал небольшой проект на github для создания быстро настраиваемых диалогов в голографическом стиле (при условии, что телефон поддерживает голографический стиль). Вы можете найти проект здесь: https://github.com/danoz73/QustomDialog
Он должен легко позволить перейти от скучного синего к волнующему оранжевому!
Проект в основном представляет собой пример использования настраиваемого конструктора диалоговых окон, и в этом примере я создал настраиваемое представление, которое, похоже, соответствует примеру IP-адреса, который вы указываете в исходном вопросе.
С
QustomDialog
, чтобы создать базовый диалог (заголовок, сообщение) с желаемым другим цветом для заголовка или разделителя, вы используете следующий код:А чтобы добавить собственный макет (скажем, чтобы добавить маленький IP-адрес
EditText
), вы добавляетев конструктор с макетом, который вы разработали (пример IP можно найти в github). Надеюсь, это поможет. Большое спасибо Джозефу Эрлу за его ответ здесь .
источник
setItems
в этом настраиваемом диалоговом окне. Когда я добавляю список, он фактически сдвигает заголовок под списком. Как решить эту проблему.Цвет разделителя:
Это немного хак, но он отлично работает для меня и работает без какой-либо внешней библиотеки (по крайней мере, на Android 4.4).
Вы можете найти больше идентификаторов диалогов в файле alert_dialog.xml . Например.
android:id/alertTitle
для изменения цвета заголовка ...ОБНОВЛЕНИЕ: цвет заголовка
Хак для изменения цвета заголовка:
источник
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
здесь натыкаюсь.DialogFragment
когда у цвета заголовка нет идентификатора,android:id/alertTitle
но я не нашел правильный.NullPointerException
вsetTextColor()
проверьте, это полезно для вас ...
вы получите подробную информацию по следующей ссылке.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
источник
Это установит цвет для заголовка, значка и разделителя. Обязательно изменится с любой новой версией Android.
Не забудьте вызвать dialog.show () перед вызовом этого метода.
источник
Следуя исходному коду диалогового окна , я обнаружил, что заголовок создается в классе
MidWindow
путем расширенияdialog_title_holo.xml
макета. так что идентификаторmTitleView
равен,title
а идентификатор делителя равенtitleDivider
.мы можем получить доступ к Id
title
просто с помощьюandroid.R.id.title
.и доступ к идентификатору
titleDivider
пользователяResources.getSystem().getIdentifier("titleDivider","id", "android");
Последний код, который я использовал для изменения направления заголовка и изменения цвета:
источник
Если вам не нужна "библиотека" для этого, вы можете использовать этот ужасный прием:
Это было протестировано и работает на 4.x; не тестировался, но если у меня хорошая память, он должен работать для 2.x и 3.x
источник
В классе onCreateView я поместил это:
colorPrimary ссылается на наш файл colors.xml, в котором хранятся все цвета. Также
d.setTitle
предоставляет хакерский способ установить цвет заголовка.источник
Если вы создаете собственный макет для диалогового окна предупреждения
тогда вы можете легко добавить такой способ, чтобы изменить цвет
источник
Если вы используете собственный макет заголовка, вы можете использовать его как
alertDialog.setCustomTitle(customTitle);
пример
В потоке пользовательского интерфейса используйте диалог, например:
customtitlebar.xml
источник
Вот еще одно решение (на основе предложенных ответов), которое обрабатывает стили диалогов в одном классе, не беспокоясь о состоянии диалогового окна при изменении стиля - диалоговое окно может быть уже показано или только что инициализировано.
Пример использования:
Реализация:
источник
Продолжая этот ответ: https://stackoverflow.com/a/15285514/1865860 , я раздвоил красивое репозиторий github от @ daniel-smith и внес некоторые улучшения:
setItems
методitems_list
setItems
методахlistItem
сенсорная обратная связьссылка: https://github.com/dentex/QustomDialog
источник
Вместо использования разделителя в диалоговом окне используйте представление в настраиваемом макете и установите макет как настраиваемый макет в диалоговом окне.
custom_popup.xml:
activity.java:
источник
источник
Если вы используете расширение диалога, используйте:
источник