Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改多选列表项复选框的颜色_Java_Android_Listview_Checkbox_Android Styles - Fatal编程技术网

Java 更改多选列表项复选框的颜色

Java 更改多选列表项复选框的颜色,java,android,listview,checkbox,android-styles,Java,Android,Listview,Checkbox,Android Styles,我有一个android应用程序,其中有一个列表视图,选择模式设置为多个。我已将布局设置为简单列表项多选。它在行的右侧给出复选框 但问题是:这些复选框的按钮色调是可怕的蓝色(这与我的应用程序配色方案相去甚远)。无论我做什么,我都无法改变 我已经尝试过了:为CheckBox创建一个样式,为CheckedTextView创建一个样式,在那里更改各种按钮的色调和颜色重音 这些都不管用。 我该怎么办 布局图: ... <ListView android:layout_width="ma

我有一个android应用程序,其中有一个列表视图,选择模式设置为多个。我已将布局设置为简单列表项多选。它在行的右侧给出复选框

但问题是:这些复选框的按钮色调是可怕的蓝色(这与我的应用程序配色方案相去甚远)。无论我做什么,我都无法改变

我已经尝试过了:为CheckBox创建一个样式,为CheckedTextView创建一个样式,在那里更改各种按钮的色调和颜色重音

这些都不管用。 我该怎么办

布局图:

...
   <ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listView1"
    android:layout_weight="1"
    android:choiceMode="singleChoice" /> ...
。。。
...
一段活动代码:

  ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(),
  android.R.layout.simple_list_item_multiple_choice, players);
  itemsList.setAdapter(adapter);
ArrayAdapter=新的ArrayAdapter(getApplicationContext(),
android.R.layout.simple_list_item_多选,玩家);
itemsList.setAdapter(适配器);
我尝试过的解决方案:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:colorPrimary">@color/MainColor</item>
    <item name="android:colorAccent">@color/colorAccent</item>
    <item name="android:textColor">@color/MainColor</item>
    <item name="colorAccent">@color/MainColor</item>
    <item name="colorPrimary">@color/MainColor</item>
    <item name="android:checkboxStyle">@style/CheckBoxStyle</item>
    <item name="android:checkedTextViewStyle">@style/CheckedTextViewStyle</item>
</style>
<style name="CheckBoxStyle" parent="AppTheme">
    <item name="android:tint">@color/colorAccent</item>
    <item name="android:buttonTint">@color/colorAccent</item>
</style>

<style name="CheckedTextViewStyle" parent="AppTheme">
    <item name="android:colorButtonNormal">@color/colorAccent</item>
    <item name="android:checkMarkTint">@color/colorAccent</item>
    <item name="android:tint">@color/colorAccent</item>
    <item name="android:buttonTint">@color/colorAccent</item>
    <item name="android:colorAccent">@color/colorAccent</item>
</style>

@颜色/主颜色
@颜色/颜色重音
@颜色/主颜色
@颜色/主颜色
@颜色/主颜色
@样式/复选框样式
@样式/选中的文本视图样式
@颜色/颜色重音
@颜色/颜色重音
@颜色/颜色重音
@颜色/颜色重音
@颜色/颜色重音
@颜色/颜色重音
@颜色/颜色重音

UPD:另外,如果有人知道如何在不使用复选框的情况下实现这一点,但也不创建无用的自定义适配器,我也会接受这一回答。

创建三个可绘图项:

复选框_selector.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_check_on" android:state_checked="true" />
    <item android:drawable="@drawable/btn_check_off" android:state_checked="false" />
</selector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@color/colorAccent" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM43.74,59.84L32.31,48.55l3.23,-3.19l8.2,8.1l17.34,-17.13l3.23,3.19L43.74,59.84z"/>
</vector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#fafafa" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM48,75.55c-15.21,0 -27.55,-12.33 -27.55,-27.55c0,-15.21 12.33,-27.55 27.55,-27.55c15.21,0 27.55,12.33 27.55,27.55C75.55,63.21 63.21,75.55 48,75.55z"/>
</vector>

btn\u check\u on.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_check_on" android:state_checked="true" />
    <item android:drawable="@drawable/btn_check_off" android:state_checked="false" />
</selector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@color/colorAccent" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM43.74,59.84L32.31,48.55l3.23,-3.19l8.2,8.1l17.34,-17.13l3.23,3.19L43.74,59.84z"/>
</vector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#fafafa" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM48,75.55c-15.21,0 -27.55,-12.33 -27.55,-27.55c0,-15.21 12.33,-27.55 27.55,-27.55c15.21,0 27.55,12.33 27.55,27.55C75.55,63.21 63.21,75.55 48,75.55z"/>
</vector>

btn\u check\u off.xml

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_check_on" android:state_checked="true" />
    <item android:drawable="@drawable/btn_check_off" android:state_checked="false" />
</selector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@color/colorAccent" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM43.74,59.84L32.31,48.55l3.23,-3.19l8.2,8.1l17.34,-17.13l3.23,3.19L43.74,59.84z"/>
</vector>
<vector android:height="32dp" android:viewportHeight="105.0"
    android:viewportWidth="105.0" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#fafafa" android:pathData="M48,17c-17.12,0 -31,13.88 -31,31s13.88,31 31,31S79,65.12 79,48S65.12,17 48,17zM48,75.55c-15.21,0 -27.55,-12.33 -27.55,-27.55c0,-15.21 12.33,-27.55 27.55,-27.55c15.21,0 27.55,12.33 27.55,27.55C75.55,63.21 63.21,75.55 48,75.55z"/>
</vector>


将复选框\u selector.xml应用为可绘制到复选框中。您将获得所需的结果

从Android
棒棒糖开始(Api 21),您可以设置活动的主题:

<item name="android:checkMarkTint">#ff0000</item>
<style name="AdapterTheme" parent="@style/MainTheme">
    <item name="android:checkMarkTint">#ff0000</item>
</style>
并将其设置为您的
ArrayAdapter

ContextThemeWrapper themedContext = new ContextThemeWrapper(this, R.style.AdapterTheme);
ArrayAdapter<String> adapter = new ArrayAdapter<>(themedContext, android.R.layout.simple_list_item_multiple_choice, players);
ContextThemeWrapper主题上下文=新的ContextThemeWrapper(这个,R.style.AdapterTheme);
ArrayAdapter=新的ArrayAdapter(主题上下文、android.R.layout.simple\u列表、项目、多选、玩家);

但如何在默认android行布局中将自定义绘图应用于复选框?我想这涉及到创建一个完整的自定义适配器,我试图避免:(