视图不会更改以自定义可绘制的正确色彩

时间:2018-12-28 09:42:55

标签: android kotlin view background-color

我有一个这样的视图(我省略了其余的小部件):

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="236dp"
    android:background="@drawable/mask_round_corner_16r">

    <View
        android:id="@+id/baseForeground"
        android:layout_width="0dp"
        android:layout_height="172dp"
        android:background="@drawable/mask_round_corner_16r"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />    

    <OtherStuff>
        ....
    </OtherStuff>
</android.support.constraint.ConstraintLayout>

具有作为背景的形状以使其具有圆形边框:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/white" />
    <corners android:radius="16dp" />
</shape>

问题是我想通过代码更改Container和View的颜色,而不更改用于赋予它们形状的drawable。

所以我做的是:

var colorTop = ContextCompat.getColor(context, R.color.dark_organge) // dark color
baseForeground.backgroundTintList = ColorStateList.valueOf(color)

var colorBot = ContextCompat.getColor(context, R.color.light_organge)// light color
container.backgroundTintList = ColorStateList.valueOf(color)

但是视图正确设置了颜色。在特殊的前景视图中。{@+id/baseForeground)似乎比平时更亮

也许。。我想念什么吗?还是做错了什么?

更改颜色后也做了invalidate(),但仍然不起作用 仅供参考:所有这些视图都在recyclerview中使用。

编辑

使其更加清晰。我要实现的是将颜色设置为ConstraintLayout,将颜色设置为View。 问题在于它们具有可绘制的形状来设置形状,而当我尝试设置视图的色调时,只是视图会改变,而不会同时改变

我现在所得到的(只是,专注于视图的颜色,其他小部件都不是问题^^) enter image description here

应该是什么 enter image description here

0 个答案:

没有答案