gpt4 book ai didi

android - 更改按钮 drawableright 中使用的形状的颜色

转载 作者:行者123 更新时间:2023-11-29 17:53:48 25 4
gpt4 key购买 nike

我在 xml 文件中设置了一个形状,并在按钮上的可绘制对象中使用了 xml。感谢这个链接 Drawable shape not showing when used in combination with android:drawableBottom attribute.我能够得到要显示的形状。我想使用 rgb 值更改形状的颜色填充。我试过 setCompoundDrawablesWithIntrinsicBounds 但我似乎无法将 rgb 值链接到按钮上的 drawableright 图像。

这里是circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:id="@+id/circle2">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
<size android:width="20dp"
android:height="20dp"/>
</shape>

这是我的按钮

      <ToggleButton
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@drawable/custom_fixture_buttons"
android:drawableRight="@drawable/circle"
android:textColor="@drawable/white"
android:textOff="F6"
android:textOn="F6"
android:textSize="30sp" />

这是我改变形状颜色的尝试。

    private void SetColorDot(int index, int i, int j, int k) {

switch (index) {
case 0: {

Resources res = getResources();
final Drawable drawable = res.getDrawable(R.drawable.circle);
drawable.setColorFilter(Color.rgb(i, j, k), Mode.SRC_ATOP);
img.setBackgroundDrawable(drawable);
Fixture1.setCompoundDrawablesWithIntrinsicBounds(0, 0,img, 0);
break;
}

新代码效果很好

    private void SetColorDot(int index, int i, int j, int k) {

switch (index) {
case 0: {

Resources res = getResources();
final Drawable drawable = res.getDrawable(R.drawable.circle);
((GradientDrawable) drawable).setColor(Color.rgb(i, j, k));
drawable.mutate();

Fixture1.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;

最佳答案

您应该能够将 Drawable 转换为 GradientDrawable,并对其调用 setColor() 方法为其分配单一颜色.请注意,更改颜色会影响从资源加载的所有 Drawable 实例。如果你也在其他地方使用它并且不希望其他实例也同时改变,那么你应该在 Drawable 上调用 mutate() 来提供它在更改颜色之前具有单独的状态。

所以在你的情况下你可以这样做:

Drawable drawable = res.getDrawable(R.drawable.circle);
// Do this only if you are also using the Drawable in another place,
// and don't want it to be changed also.
// drawable.mutate();
((GradientDrawable)drawable).setColor(Color.rgb(i, j, k));

关于android - 更改按钮 drawableright 中使用的形状的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21080156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com