Za pomocą tego polecenia zmieniłem kolor tytułu AlertDialog
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Ale chcę zmienić kolor linii, która pojawia się pod tytułem; jak mogę to zrobić ?
Uwaga: nie chcę używać niestandardowego układu
android
android-alertdialog
Mohammed Subhi Sheikh Quroush
źródło
źródło
Odpowiedzi:
Niestety nie jest to szczególnie proste zadanie do wykonania. W mojej odpowiedzi szczegółowo opisuję, jak dostosować kolor a,
ListSeparator
po prostu sprawdzając styl nadrzędny używany przez Androida, tworząc nowy obraz i tworząc nowy styl na podstawie oryginału. Niestety, w przeciwieństwie doListSeparator
stylu,AlertDialog
motywy mają charakter wewnętrzny i dlatego nie można do nich odwoływać się jako stylów macierzystych. Nie ma łatwego sposobu na zmianę tej małej niebieskiej linii! Dlatego musisz uciec się do tworzenia niestandardowych okien dialogowych.Jeśli to nie twoja filiżanka herbaty ... nie poddawaj się! Byłem bardzo zaniepokojony, że nie ma na to łatwego sposobu, więc założyłem mały projekt na githubie do tworzenia szybko dostosowanych dialogów w stylu holo (zakładając, że telefon obsługuje styl Holo). Projekt można znaleźć tutaj: https://github.com/danoz73/QustomDialog
Powinien z łatwością umożliwić przejście od nudnego błękitu do ekscytującej pomarańczy!
Projekt jest w zasadzie przykładem użycia konstruktora niestandardowego okna dialogowego, aw przykładzie utworzyłem niestandardowy widok, który wydawał się odpowiadać przykładowi adresu IP, który podałeś w swoim pierwotnym pytaniu.
W przypadku
QustomDialog
, aby stworzyć podstawowe okno dialogowe (tytuł, komunikat) z żądanym innym kolorem tytułu lub separatora, należy użyć następującego kodu:Aby dodać niestandardowy układ (powiedzmy, aby dodać mały adres IP
EditText
), dodajeszdo konstruktora z zaprojektowanym układem (przykład adresu IP można znaleźć na github). Mam nadzieję, że to pomoże. Wielkie podziękowania dla Josepha Earla i jego odpowiedzi tutaj .
źródło
setItems
w tym niestandardowym oknie dialogowym. Dodanie listy powoduje przesunięcie tytułu poniżej listy. Jak rozwiązać ten problem.Kolor przegrody:
Trochę to hack, ale dla mnie działa świetnie i działa bez żadnej zewnętrznej biblioteki (przynajmniej na Androidzie 4.4).
Więcej identyfikatorów okien dialogowych można znaleźć w pliku alert_dialog.xml . Na przykład.
android:id/alertTitle
do zmiany koloru tytułu ...UPDATE: Kolor tytułu
Sposób na zmianę koloru tytułu:
źródło
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
tutaj.DialogFragment
brakiem identyfikatora koloru tytułu,android:id/alertTitle
ale nie znalazłem właściwego.NullPointerException
wsetTextColor()
sprawdź, czy jest to przydatne dla Ciebie ...
otrzymasz szczegółowe informacje z poniższego linku.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
źródło
Spowoduje to ustawienie koloru tytułu, ikony i separatora. Obowiązuje zmiana w każdej nowej wersji Androida.
Pamiętaj, aby wywołać dialog.show () przed wywołaniem tej metody.
źródło
Postępując zgodnie z kodem źródłowym Dialog , odkryłem, że tytuł jest generowany w klasie
MidWindow
przez zawyżeniedialog_title_holo.xml
układu. więc IdmTitleView
jesttitle
i Id rozdzielacza jesttitleDivider
.możemy uzyskać dostęp do Id
title
po prostu przezandroid.R.id.title
.i dostęp do identyfikatora użytkownika
titleDivider
wgResources.getSystem().getIdentifier("titleDivider","id", "android");
Ostatni kod, którego użyłem do zmiany kierunku tytułu i zmiany koloru to:
źródło
Jeśli nie chcesz do tego „biblioteki”, możesz użyć tego złego hacka:
To zostało przetestowane i działa na 4.x; nie testowane pod, ale jeśli moja pamięć jest dobra, powinna działać dla 2.xi 3.x.
źródło
W klasie onCreateView umieściłem to:
colorPrimary łączy z naszym plikiem colors.xml, który przechowuje wszystkie kolory. Również
d.setTitle
zapewnia hacky sposób ustawić kolor tytułowy.źródło
Jeśli tworzysz niestandardowy układ okna dialogowego ostrzeżenia
następnie możesz łatwo dodać w ten sposób, aby zmienić kolor
źródło
Jeśli używasz niestandardowego układu tytułu , możesz go używać jak
alertDialog.setCustomTitle(customTitle);
Przykład
W wątku interfejsu użytkownika użyj okna dialogowego takiego jak:
customtitlebar.xml
źródło
Oto inne rozwiązanie (oparte na sugerowanych odpowiedziach), które obsługuje stylizację okien dialogowych w jednej klasie bez konieczności martwienia się o stan okna dialogowego po zmianie stylu - okno dialogowe może być już wyświetlone lub po prostu zainicjowane.
Przykład użycia:
Realizacja:
źródło
Kontynuując tę odpowiedź: https://stackoverflow.com/a/15285514/1865860 , rozwidliłem ładne repozytorium github z @ daniel-smith i wprowadziłem kilka ulepszeń:
setItems
metodaitems_list
setItems
metodachlistItem
reakcja na dotyklink: https://github.com/dentex/QustomDialog
źródło
Zamiast używać separatora w oknie dialogowym, użyj widoku w układzie niestandardowym i ustaw układ jako układ niestandardowy w oknie dialogowym.
custom_popup.xml:
activity.java:
źródło
źródło
W przypadku rozszerzenia okna użyj:
źródło