Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Android 创建具有动态颜色的自定义xml绘图_Android_Android Layout - Fatal编程技术网

Android 创建具有动态颜色的自定义xml绘图

Android 创建具有动态颜色的自定义xml绘图,android,android-layout,Android,Android Layout,我需要在Android中创建一个自定义单选按钮,具有以下自定义可绘制背景: 我可以为选定和未选定创建不同的绘图。下面是选中时可绘制的xml <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape xmlns:android="http://schemas

我需要在Android中创建一个自定义单选按钮,具有以下自定义可绘制背景:

我可以为选定和未选定创建不同的绘图。下面是选中时可绘制的xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <size android:width="20dp" android:height="20dp"/>
        <solid android:color="@color/white"/>
        <stroke android:width="1dp" android:color="#ff207d94"/>
    </shape>
</item>
<item>
    <shape android:shape="rectangle">
        <stroke android:color="@android:color/transparent"
            android:width="9dp"/>
        <solid android:color="#ff207d94"/>
        <size
            android:width="7dp"
            android:height="7dp"/>
    </shape>
</item>

我的要求是动态更改所选单选按钮的颜色,即边框和内部的纯色应相同。使用当前的xml,我无法实现这一点,因为item1的笔划为#ff207d94颜色,而item2的笔划为#ff207d94颜色


我在任何地方都找不到这个问题的确切解决办法。有什么办法可以做到这一点吗?

我想这对你有帮助吗


  • 首先,将drawable file复选框_style.xml添加到drawable文件夹
    
    
  • 将CustomCheckboxTheme样式添加到values文件夹中的styles.xml文件中
    
    
  • 在布局文件中使用CustomCheckboxTheme样式
    
    

    作者:snail
    资料来源:CSDN

    原文:HTTPS://blog.csdn.net/zuolongsnail/article/details/7106586

    我想这对你有帮助吗


  • 首先,将drawable file复选框_style.xml添加到drawable文件夹
    
    
  • 将CustomCheckboxTheme样式添加到values文件夹中的styles.xml文件中
    
    
  • 在布局文件中使用CustomCheckboxTheme样式
    
    

    作者:snail
    资料来源:CSDN
    原文:HTTPS://blog.csdn.net/zuolongsnail/article/details/7106586

    你可以试试这个

    LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.drawable_res);
    GradientDrawable gradient = (GradientDrawable) shape.findDrawableByLayerId(R.id.item_id);
    gradient.setColor(ContextCompat.getColor(context, color_res));
    
    你可以试试这个

    LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.drawable_res);
    GradientDrawable gradient = (GradientDrawable) shape.findDrawableByLayerId(R.id.item_id);
    gradient.setColor(ContextCompat.getColor(context, color_res));
    

    谢谢这正是我想要的。由于某些原因,第一次单击时,单选按钮的颜色设置正确。我只需要更改为
    LayerDrawable shape=(LayerDrawable)getButtonDrawable()谢谢。这正是我想要的。由于某些原因,第一次单击时,单选按钮的颜色设置正确。我只需要更改为
    LayerDrawable shape=(LayerDrawable)getButtonDrawable()
    
        <CheckBox 
            android:id =“@ + id / select_all” 
            android:layout_width =“wrap_content” 
            android:layout_height =“wrap_content” 
            style =“@ style / CustomCheckboxTheme”/>
    
    LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.drawable_res);
    GradientDrawable gradient = (GradientDrawable) shape.findDrawableByLayerId(R.id.item_id);
    gradient.setColor(ContextCompat.getColor(context, color_res));