6

我有以下按钮:

<Button
    android:id="@+id/Button_Collect"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_marginBottom="16dp"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/CollectButtonShape" />

看起来像这样:

在此处输入图像描述

它由以下背景可绘制对象组成:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <shape android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2" android:useLevel="false" >
    <solid android:color="@android:color/transparent" />

    <stroke
        android:width="2dp"
        android:color="#FF27AE60" />
  </shape>
</item>
<item android:top="10dp" android:left="10dp" android:right="10dp" android:bottom="10dp">
    <shape android:shape="oval">
        <solid android:color="#FF27AE60" />
    </shape>
</item>
</layer-list>

如何以编程方式更改圆环和内圆的颜色(我需要在 Touch 事件中执行此操作)???

4

3 回答 3

5

回复晚了,但我发现您可以使用FindDrawableByLayerId ()访问 LayerList 中的每一层。然后我可以访问每个对象并设置适当的颜色!

于 2014-01-03T03:54:18.680 回答
0

您可以尝试使用ColorStateList,我认为它可以达到您所追求的目的。

于 2013-10-23T16:51:28.123 回答
0

通过在drawable中有不同的图像是可能的。考虑一下,如果你想把绿色变成黑色,你需要在drawable中有黑色圆圈,然后试试这个代码。这会帮助你..

在按钮单击事件上,使用此代码

public void onClick(View v) {
   if(v == ButtonName) {
     ButtonName.setImageResource(R.drawable.ImageName);
   }
}
于 2013-10-23T16:45:16.657 回答