Цвет подчеркивания заголовка AlertDialog
Есть ли способ изменить цвет подчеркивания заголовка в AlertDialog? Я уже изменил цвет заголовка через определение пользовательского стиля (см. Ниже), но я не нашел никакого атрибута xml для подчеркивания.
<style name="CustomTitle" parent="@android:style/TextAppearance.Holo">
<item name="android:textColor">@color/green</item>
</style>
Я использую Android 4.
Редактировать: вот как я создаю AlertDialog
Builder ad = new AlertDialog.Builder(new ContextThemeWrapper(this,
R.style.DialogPrivate));
ad.setTitle("Custom Dialog");
ad.setMessage("blaaaaa");
ad.setPositiveButton("test", null);
ad.setNegativeButton("test2", null);
ad.show();
И как это выглядит на данный момент Скриншот
3 ответа
Подчеркивание на самом деле представляет собой объект View с цветом фона, установленным на голо-синий по умолчанию (по крайней мере, на jellybean).
Вы можете увидеть макет диалоговых окон предупреждений по адресу: https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/alert_dialog_holo.xml#L58. В частности, представление titleDivider:
<View android:id="@+id/titleDivider"
android:layout_width="match_parent"
android:layout_height="2dip"
android:visibility="gone"
android:background="@android:color/holo_blue_light" />
Это печально, потому что это означает, что нет способа настроить цвет представления без какого-либо уродливого, хакерского кода, такого как:
void changeUnderlineColor(AlertDialog d, int color) {
final ViewGroup v = (ViewGroup) d.getWindow().findViewById(android.R.id.content);
v.findViewById(getResources().getIdentifier("titleDivider", "id", "android")).setBackgroundColor(color);
}
Это работает на Jellybean с использованием темы holo_light, но это почти наверняка плохая идея. Если вы действительно хотите изменить цвет линии, похоже, вам нужно создать полностью собственный диалог самостоятельно
Этот ответ немного запоздал, но я считаю, что "подчеркивание" на самом деле является частью файла изображения из 9 патчей, используемого в качестве фона. Вам нужно будет изменить фоновое изображение, чтобы изменить цвет.