我有
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#FFFF00" />
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
</shape>
<TextView
android:background="@drawable/test"
android:layout_height="45dp"
android:layout_width="100dp"
android:text="Moderate"
/>
Run Code Online (Sandbox Code Playgroud)
所以现在我希望这个形状根据我从Web服务调用中获取的信息来改变颜色.所以它可能是黄色或绿色或红色或其他任何取决于我从网络电话呼叫收到的颜色.
如何更改形状的颜色?根据这些信息?
我有一个drawable,我用作LinearLayout的背景.我想在运行时更改此Shape的颜色.我尝试过使用几种方法..但都没有用.
我遵循了这里描述的方法:http://www.anddev.org/android-2d-3d-graphics-opengl-problems-f55/change-shape-drawable-solid-color-t16798.html
但是有同样的问题......它不会崩溃..但颜色不会改变!
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00A6C1" />
<corners android:radius="@dimen/square_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)
代码片段:
GradientDrawable drawable = (GradientDrawable) activity.getResources().getDrawable(R.drawable.blue_square_shape);
int color = ((Application) getApplication()).getColor();
drawable.setColor(color);
block.findViewById(R.id.blockSquare).setBackgroundDrawable(drawable);
findViewById(R.id.blockSquare).postInvalidate();
Run Code Online (Sandbox Code Playgroud)
任何线索?我已经过了一整天谷歌搜索...而且它变得很烦人......
更新:
当我尝试对此形状执行相同操作时:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shape" android:shape="rectangle">
<gradient android:startColor="#1FBCCF" android:endColor="#06A4C1"
android:angle="270" />
<corners android:topLeftRadius="@dimen/footer_corners"
android:topRightRadius="@dimen/footer_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)
颜色变成黑色......我想它可以改变...
我有以下按钮:
<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" />
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

其中包括以下背景drawable:
<?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>
Run Code Online (Sandbox Code Playgroud)
如何以编程方式更改环和内圈的颜色(我需要在Touch事件中执行此操作)???