Подтвердить что ты не робот

Значки флажков Android appcompat-v7: 21.0.0

Я обновил свой проект, чтобы использовать последнюю библиотеку поддержки приложений, в новой версии используются флажки для создания материалов и переключатели. Мое приложение темное, а флажки черные, что трудно увидеть. Я пытаюсь изменить их цвета в соответствии с Поддержание совместимости, но пока ничего не работает.

RES/значение/styles.xml

  <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">

    <!-- customize the color palette -->
    <item name="colorAccent">@color/silver</item>
  </style>

в build.gradle:

    android {
      compileSdkVersion 21
      buildToolsVersion '21.1.1'

      defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
      }
    }

.....
.....    

    compile 'com.android.support:appcompat-v7:21.0.0'

AndroidManifest.xml:

  <application
      android:name="ee.mtakso.App"
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppBaseTheme">

Флажки, editTexts, radioobuttons и т.д. остаются черными.

Edit

Я не знаю, имеет ли это значение большое значение, но я использую радиокнопки и флажки для CheckedTextView, как показано ниже:

Одиночный (переключатель): android:checkMark="?android:attr/listChoiceIndicatorSingle"

Мульти (флажок): android:checkMark="?android:attr/listChoiceIndicatorMultiple"

Так как они получают доступный черный цвет материал, я не думаю, что проблема исходит от них.

4b9b3361

Ответ 1

У меня была аналогичная проблема с непроверенными CheckBoxes и RadioButtons. Я нашел решение, когда понял, что элементы управления принимают свой цвет "Отключен" от

<item name="android:textColorSecondary">@color/secondary_text</item>


EDIT:

Задание, если ваше приложение или тема действия наследует один из L AppCompat (Dark/Light/Light.DarkActionBar), вы можете установить:

<style name="SampleTheme" parent="Theme.AppCompat">
    <item name="colorAccent">@color/green</item>
    <item name="android:textColorSecondary">@color/red</item>
</style>

И этот результат:

enter image description here

Примечание:. Когда вы получаете другой эффект, вы, вероятно, используете "неправильную" тему - убедитесь, что вы правильно ее установили.

Ответ 2

Я считаю, что это ошибка в теме AppCompat. Мое обходное решение добавляет две строки кода в каждый CheckBox в файле макета xml.

android:button="@drawable/abc_btn_check_material"
android:buttonTint="@color/colorAccent"

Вы никогда не хотите направить ссылки abc_ drawables, но в этом случае я не нашел другого решения.

Это относится и к виджету RadioButton! Вы просто использовали бы abc_btn_radio_material вместо abc_btn_check_material

Ответ 3

У меня были те же проблемы, что и у вас. Я снова посмотрел на AppCompat v21 - Материальный дизайн для предустановленных устройств Lollipop!

И я нашел это: "Все ваши действия должны простираться от ActionBarActivity, который простирается от FragmentActivity из библиотеки поддержки v4, поэтому вы можете продолжать использовать фрагменты".

Итак, я изменил свою деятельность на ActionBarActivity и решил свои проблемы. Я надеюсь, что это тоже решит вашу проблему.

Ответ 4

Я искал решение, и я нашел его.

Шаг 1
Расширение ActionBarActivity

public static class MyActivity extends ActionBarActivity {
        //...
}

Шаг 2
В вашем файле стиля записываются два значения

<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorAccent">#009688</item>
        <item name="android:textColorSecondary">#757575</item>
</style>

colorAccent - проверенный цвет
android: textColorSecondary - непроверенный цвет

Шаг 3
Задайте свою тему в AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.test.radiobutton"
          android:versionCode="1"
          android:versionName="1.0">
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">

                    ....

        <activity android:name=".activity.MyActivity "
                  android:theme="@style/MyTheme"/>

                  .....

    </application>
</manifest>



РЕЗУЛЬТАТ
Android 5
android_5
Android 4.2.2
android_4.2.2

Ответ 5

1. Объявите пользовательский стиль в файле styles.xml.

<style name="CustomStyledRadioButton" parent="Theme.AppCompat.Light">
    <item name="colorControlNormal">@color/red</item>
    <item name="colorControlActivated">@color/red_pressed</item>
</style>

2. Примените этот стиль к своему RadioButton через атрибут android: theme.

  <RadioButton  android:id="@+id/rb_option1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:checked="true"
    android:gravity="left"
    android:lineSpacingExtra="10dp"
    android:padding="10dp"
    android:text="Option1"
    android:textColor="@color/black"
    android:theme="@style/CustomStyledRadioButton"/>

Ответ 6

Я сделал это, чтобы изменить по крайней мере границу флажка:

<style name="checkBoxComponent" parent="AppTheme">
    //Checked color
    <item name="colorAccent">@color/blueBackground</item> 
    //Checkbox border color
    <item name="android:textColorSecondary">@color/grayBorder</item> 
</style>

И в моем макете

<android.support.v7.widget.AppCompatCheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:theme="@style/checkBoxComponent"
                        android:text="Yay" />

По-прежнему выяснять, как получить фон флажка. Надеюсь, что это поможет.

Ответ 7

Чтобы указать цвета, переопределите:

для отмеченного цвета:

<item name="android:colorControlActivated">@color/your_color</item> 

для неэкранного цвета:

<item name="android:colorControlNormal">@color/your_color</item>

Ответ 8

У вас будет много проблем с библиотекой совместимости с обоими флажками и переключателями.

1) Они приходят только в черном для любых устройств Android 4.x. Они подходят в Android 5.x и 2.x(не спрашивайте меня, почему это работает на 2.x, не имеют понятия).

2) У них нет отключенного состояния (неважно, включены ли все ваши флажки, иначе вы можете очень плохо удивить).

Обратите внимание, что фон темной темы по умолчанию - серый, а не черный, поэтому, если вы по умолчанию сохраняете "ok".

Чтобы решить эту проблему, я создал белую и отключенную версию следующих чертежей, все добавленные в мой основной проект, но не в проекте совместимости (для очевидной цели обслуживания):

abc_btn_check_to_on_mtrl_000
abc_btn_check_to_on_mtrl_015
abc_btn_radio_to_on_mtrl_000
abc_btn_radio_to_on_mtrl_015

Затем создаются доступные для управления всеми состояниями (для переопределения исходного состояния):

Например, темная тема будет использовать это:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:state_checked="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_015_disabled" />
    <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_015" />
    <item android:state_enabled="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_000" />
    <item android:drawable="@drawable/abc_btn_check_to_on_mtrl_000_disabled" />
</selector>

Светлая тема будет использовать это (пользователь может переключать тему в моем приложении):

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:state_checked="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_015_disabled" />
    <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_015_light" />
    <item android:state_enabled="true" android:drawable="@drawable/abc_btn_check_to_on_mtrl_000_light" />
    <item android:drawable="@drawable/abc_btn_check_to_on_mtrl_000_disabled" />
</selector>

Тогда все, что мне нужно было сделать, это переопределить тему совместимости по умолчанию (как активность, так и диалог, для темных/темных тем), добавив что-то вроде этого:

    <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material</item>
    <item name="android:listChoiceIndicatorMultiple">@drawable/abc_btn_check_material</item>

И это для легких тем:

    <item name="android:listChoiceIndicatorSingle">@drawable/abc_btn_radio_material_light</item>
    <item name="android:listChoiceIndicatorMultiple">@drawable/abc_btn_check_material_light</item>

Теперь у меня есть полные функциональные флажки и радио на всех версиях Android! ИМО в библиотеке-совместителе вообще не тестировалась для темной темы, использовалась только белая тема. Отключенное состояние, вероятно, никогда не будет использоваться dev of the compat lib.

Ответ 9

100% Работа

Просто создайте стиль для своего RadioButton и измените colorAccent, как показано ниже:

<style name="RadioButtonTeal" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorAccent">@color/md_teal_600</item>
</style>

Затем просто добавьте этот стиль в свой AppCompatRadioButton:

<android.support.v7.widget.AppCompatRadioButton
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:theme="@style/RadioButtonTeal" />

Ответ 10

Просто растяните ActionBarActivity так:

Public class MainActivity extends ActionBarActivity {

//...

}

Ответ 11

То, что вы сделали, должно работать согласно сообщению в блоге Android:

colorAcent: яркое дополнение к цвету основного бренда. По умолчанию этот цвет применяется к элементам управления каркасом (через colorControlActivated).

colorControlActivated. Цвет применяется к элементам управления каркасом в их активированном (например, проверенном) состоянии.

Возможно, проблема связана с вашей темой, которая имеет @style/Theme.AppCompat.Light как родительский, попробуйте просто Theme.AppCompat:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <!-- customize the color palette -->
    <item name="colorAccent">@color/silver</item>
</style>

Ответ 12

Если вы хотите изменить определенный цвет фона флажка (не все приложение), вы можете попробовать этот трюк:

Создайте файл custom_checkbox.xml для фона в выпадающей папке:

 <shape xmlns:android="http://schemas.android.com/apk/res/android">
     <stroke android:width="14dp" android:color="@android:color/transparent"  />
     <solid android:color="#ffffff" /> //the intended color of the background
     <corners android:radius="2dp" />
 </shape> 

а затем установите его в качестве фона флажка:

<CheckBox
    android:id="@+id/rebate_tnc_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_checkbox" />

Ответ 13

вы можете передать еще одну тему в конструкцию диалогового окна предупреждения

<style name="RadioButton" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorControlNormal">@color/red</item>
    <item name="colorControlActivated">@color/green</item>
</style>

и используйте этот стиль в конструкторе

new AlertDialog.Builder(getContext(), R.style.RadioButton);

Ответ 14

Родитель вашего AppTheme @style/Theme.AppCompat.Light.

Измените его на @style/Theme.AppCompat.

Теперь ваши органы управления будут светлыми на темном фоне.

Ответ 15

Я использую библиотеку appcompat v21:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/custom_color</item>
        <item name="colorAccent">@color/custom_color</item>    
</style>

Этот стиль делает мой флажок появляться с материальным дизайном (проверен на Android 5, 4.3, 4.1.1), но на Android 2.3.3 появляется со старым стилем флажка.

Ответ 16

Если вы попытаетесь создать ComboBox вручную (новый ComboBox()...), то независимо от того, что вы установили, они всегда будут черными. Понятно, что библиотека совместимости сломана, для этого я создал отчет об ошибке: https://code.google.com/p/android/issues/detail?id=158020

Ответ 17

добавить этот синтаксис для окраски виджета, такого как флажок или переключатель андроид: buttonTint = "@цвет/серебро"

Ответ 18

Добавить

<item name="android:textColorSecondary">@color/secondary_text</item>

в style.xml и style.xml(v21)