Цвет галочки с одним выбором Appcompact DialogFragment

У меня проблема. Моя деятельность имеет стиль

<style name="MaterialTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/action_bar_background</item>
    <item name="colorPrimaryDark">@color/action_bar_background</item>
    <item name="colorAccent">@color/action_bar_background</item>
</style>

также у меня есть dialogFragment с простым выбором с одним выбором.

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
    dialog.setTitle(R.string.image_resolution);
    dialog.setSingleChoiceItems(R.array.quality_labels, getPosition(), this);
    return dialog.create();
}

Как изменить цвет галочек выбора (зеленые круги) ???введите здесь описание изображения


person Gark    schedule 03.03.2015    source источник


Ответы (3)


Вы должны создать соответствующий стиль для AlertDialog

<style name="MaterialThemeDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">@color/action_bar_background</item>
</style>

и передать его конструктору AlertDialog.Builder

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final AlertDialog.Builder dialog = new AlertDialog.Builder(
            getActivity(),
            R.style.MaterialThemeDialog);
    dialog.setTitle(R.string.image_resolution);
    dialog.setSingleChoiceItems(R.array.quality_labels, getPosition(), this);
    return dialog.create();
}
person Pawel Czechowski    schedule 20.08.2015

Вы можете сослаться на пользовательский переключатель через аргумент ListAdapter в AlertDialog.Builder.setSingleChoiceItems(ListAdapter, int, OnClickListener).

Ответ в этом сообщении SO содержит подробности: диалоговое окно оповещения Android заменить по умолчанию синий с другим цветом

Чтобы получить помощь в создании пользовательских компонентов, посетите: http://android-holo-colors.com

person prhodesy    schedule 04.03.2015
comment
Без проблем. Если вы застряли, дайте мне знать - person prhodesy; 05.03.2015

1) Создайте новый xml, где checkMark — это стиль и анимация галочки, а checkMarkTint — это цвет галочки.

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:paddingEnd="16dip"
android:layout_marginTop="10dp"
android:paddingStart="16dip"
android:textSize="14sp"
android:checkMark=""="?android:attr/listChoiceIndicatorSingle"
android:checkMarkTint="@color/your_checkmark_color"
android:textColor="@color/your_text_color" />

2) Затем создайте адаптер над вашим alerDialog.SetSingleChoiceItems.

ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getApplicationContext(),R.layout.your_custom_layout, charSequenceList);

3) Добавьте адаптер

alerDialog.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    //.. 

            });
person Ashky    schedule 26.10.2016