我有一个这样的视图(我省略了其余的小部件):
<?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。 问题在于它们具有可绘制的形状来设置形状,而当我尝试设置视图的色调时,只是视图会改变,而不会同时改变