【问题标题】:Android - Change drawable color in runtimeAndroid - 在运行时更改可绘制颜色
【发布时间】:2014-01-21 04:49:39
【问题描述】:

我在 Android 应用程序的 表格布局 中为单元格使用 drawable。我想更改点击事件上的单元格颜色。是否可以在运行时更改可绘制对象的颜色。我的drawable是,

<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape= "rectangle"  >
        <solid android:color="#FFFFFF"/>
        <stroke android:width="1dp"  android:color="#483D8B"/>
</shape>

我想用点击事件改变白色“#FFFFFF”。 java可以编辑XML可绘制文件中的颜色。可能吗。 我刚刚编辑了背景颜色,它分散了可绘制对象的边框。

String StatusColor=GetColor(Retailer_x.getStatus());
Stts.setBackgroundColor(Color.parseColor(StatusColor));

需要帮助。谢谢!!!!

【问题讨论】:

  • 您的运行时代码在哪里 - 向我们展示您的尝试。
  • 类似问题已在此处得到解答stackoverflow.com/questions/5940825/…
  • @user2310289 我刚刚编辑了单元格的背景颜色。在这种情况下,单元格中有一个文本视图。

标签: java android android-drawable


【解决方案1】:
ShapeDrawable sd1 = new ShapeDrawable(new RectShape());
                        sd1.getPaint().setColor(CommonUtilities.color);
                        sd1.getPaint().setStyle(Style.STROKE);
                        sd1.getPaint().setStrokeWidth(CommonUtilities.stroke);
                        sd1.setPadding(15, 10, 15, 10);

                        sd1.getPaint().setPathEffect(
                                new CornerPathEffect(CommonUtilities.corner));
                        ln_back.setBackgroundDrawable(sd1);

【讨论】:

  • 这很好。但是遇到了一些问题。我将 CommonUtilities.stroke 编辑为“5”。并设置 CommonUtilities.color 的相关颜色。但它只给出了边界。其他部分为空。你能帮我解决这个问题吗?谢谢!!!
  • 我修好了。我使用了 LinearLayout 并将 textView 添加到其中。设置 LinearLayout 的背景颜色,并将 drawable 设置为 textView。非常感谢!!!!!!
  • sd1.getPaint().setStyle(Style.STROKE);替换为 sd1.getPaint().setStyle(Style.FILL_AND_STROKE);
【解决方案2】:

当用户点击表格单元格时,使用表格单元格背景的selector 更改表格单元格的状态。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <!-- selected -->
    <item android:drawable="@drawable/red_drawable" android:state_selected="true"/>
    <!-- focused -->
    <item android:drawable="@drawable/gray_drawable"/>
    <!-- default -->

</selector> 

【讨论】:

  • 没有。我的意思是另一件事。单元格可以表示许多状态,单击时我可以更改状态。所以我需要改变那个状态的颜色。任何想法...谢谢!
猜你喜欢
  • 2015-10-27
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多