【问题标题】:Modifying layer list programmatically以编程方式修改图层列表
【发布时间】:2018-12-17 17:30:26
【问题描述】:

在我的 Android 应用中,linearlayout 有一个 layer-list 背景。以下是代码。

   <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 时以编程方式更改环的颜色。该怎么做?

【问题讨论】:

  • 查看 StateListDrawable 或 xnl deawable 中的“选择器”标签

标签: android layer-list


【解决方案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(----);

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 2015-11-16
    • 2014-01-09
    • 1970-01-01
    • 2013-12-04
    • 2015-02-27
    • 2017-08-01
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多