后台drawable中使用的填充会影响ImageView的主要绘图

时间:2015-01-05 12:05:55

标签: android imageview android-drawable

我有一个图层列表drawable通过应用填充和每个图层描边来实现类似于下图的效果。

enter image description here

drawable的代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#99ff0000"
                android:width="0.5dp" />
            <corners
                android:radius="2dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#88ff0000"
                android:width="0.5dp" />
            <corners
                android:radius="1dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#77ff0000"
                android:width="0.5dp"/>
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#66ff0000"
                android:width="0.5dp" />
        </shape>
    </item>

    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#55ff0000"
                android:width="0.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#44ff0000"
                android:width="0.5dp"/>
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#33ff0000"
                android:width="0.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#22ff0000"
                android:width="0.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#11ff0000"
                android:width="0.5dp"/>
        </shape>
    </item>
    <item>
        <shape>
            <padding
                android:bottom="0.5dp"
                android:left="0.5dp"
                android:right="0.5dp"
                android:top="0.5dp" />
            <stroke android:color="#00ff0000"
                android:width="0.5dp"/>
        </shape>
    </item>
</layer-list>

但用于创建效果的填充也会影响ImageView的主要绘图,使图像比应有的小。我尝试使用LayerDrawable,但填充仍然影响了所有图层,这些图层位于drawable之上。

将android:cropToPadding设置为true / false没有做任何事情。我有android:scaleType设置为centerCrop。

如何防止背景drawable的填充影响主图像drawable?

这是一个直观的例子: 如果我写这个:

<ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/background"
        android:src="@drawable/rectangle_green"/>

我得到的结果如下。我想禁用应用于绿色矩形的填充。

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试使用imageview

我认为你这样做..

android:background="@drawable/padding" // ur drawable xml code
android:src="@drawable/ic_launcher"  // ur image

喜欢这个

android:background="@drawable/ic_launcher" // ur image
android:src="@drawable/padding"  // ur drawable xml code

编辑

试试这个

setImageResource(R.drawable.padding);  // ur drawable xml code

setBackgroundDrawable  // ur image