在我的Android应用中,layer-list
背景为linearlayout
。以下是代码。
<LinearLayout android:id="@+id/ut2"
android:layout_width="70dp"
android:layout_height="70dp"
android:orientation="vertical"
android:background="@drawable/circle_tapped"
android:gravity="center"
>
<ImageView
android:id="@+id/tv3"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/time"
android:scaleType="centerInside"
android:onClick="selectit"
android:clickable="true"
/>
</LinearLayout>
circle_tapped.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/pat1">
<shape android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2" android:useLevel="false" >
<solid android:color="@android:color/transparent" />
<stroke
android:width="5dp"
android:color="#FF27AE60" />
</shape>
</item>
<item android:id="@+id/pat2" android:top="10dp" android:left="10dp" android:right="10dp" android:bottom="10dp">
<shape android:shape="oval">
<solid android:color="#FF27AE60" />
</shape>
</item>
</layer-list>
此代码基本上会在图像周围绘制一个环。我想在单击linearlayout
时以编程方式更改环的颜色。怎么做?
答案 0 :(得分:1)
This解决了这个问题。
View v = findViewById(R.id.layout_id);
LayerDrawable bgDrawable = (LayerDrawable)v.getBackground();
final GradientDrawable shape = (GradientDrawable) bgDrawable.findDrawableByLayerId(R.id.shape_id);
shape.setColor(----);