Android shape中的padding无效

来源:互联网 发布:zyfile.js插件 编辑:程序博客网 时间:2024/06/04 23:33

转载地址: http://ilgnep.iteye.com/blog/1634139


但无论如何设定,padding都没有效果。后来查到http://stackoverflow.com/questions/1283085/padding-doesnt-affect-shape-in-an-xml-layout,是同样的问题。得知在shape中要设定padding的时候,需要直接写在item的属性里。实现代码如下: 

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item android:right="95px">        <shape android:shape="oval" >            <solid android:color="#FFFFFF" />        </shape>    </item>    <item android:left="150px" android:top="60px" android:bottom="60px" >        <shape android:shape="rectangle" >            <solid android:color="#FFFFFF" />            <corners android:radius="75px" />        </shape>    </item>        <item android:top="3px" android:bottom="3px" android:left="3px" android:right="98px">        <shape android:shape="oval" >            <gradient                android:endColor="#FFFAF0"                android:startColor="#F8F8FF"                android:type="linear" />        </shape>    </item>    <item android:top="63px" android:bottom="63px" android:left="153px" android:right="3px">        <shape android:shape="rectangle" >            <gradient                android:endColor="#FFFAF0"                android:startColor="#F8F8FF"                android:type="linear" />            <corners android:radius="72px" />        </shape>    </item></layer-list>


注: 
后边的item会覆盖前边的item,这正是我们想要的效果。 
为了显示边框,需要让后边的圆形和矩形,比前边的圆形和矩形略小几个像素。 
当然可以使用stroke来显示边框效果,但是如果那样,矩形的一部分边框会显示在圆形里,不满足式样的要求。 

另注: 
gradient的几种式样:linear是线性渐变,从左到右或从上到下;sweep径向渐变,是圆心到圆边;radial是角度渐变,按照角度来变换颜色。

0 0