Android shape中的padding无效 博客分类: Android
程序员文章站
2024-03-16 10:02:10
...
项目要求使用XML制作背景,背景是一个圆形和圆角矩形的拼接,还要求有边框。如下图:
在网上调查了shape的用法,大家可以参考:
http://xianqu.org/2012/04/android-borders-and-radius-corners/
http://kofi1122.blog.51cto.com/2815761/521605
layer-list可以满足需求,同时需要使用到padding选项。
但无论如何设定,padding都没有效果。后来查到http://*.com/questions/1283085/padding-doesnt-affect-shape-in-an-xml-layout,是同样的问题。得知在shape中要设定padding的时候,需要直接写在item的属性里。实现代码如下:
注:
后边的item会覆盖前边的item,这正是我们想要的效果。
为了显示边框,需要让后边的圆形和矩形,比前边的圆形和矩形略小几个像素。
当然可以使用stroke来显示边框效果,但是如果那样,矩形的一部分边框会显示在圆形里,不满足式样的要求。
另注:
gradient的几种式样:linear是线性渐变,从左到右或从上到下;sweep径向渐变,是圆心到圆边;radial是角度渐变,按照角度来变换颜色。
在网上调查了shape的用法,大家可以参考:
http://xianqu.org/2012/04/android-borders-and-radius-corners/
http://kofi1122.blog.51cto.com/2815761/521605
layer-list可以满足需求,同时需要使用到padding选项。
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
但无论如何设定,padding都没有效果。后来查到http://*.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是角度渐变,按照角度来变换颜色。
推荐阅读
-
Android中的事件传递 博客分类: Android_笔记 android事件传递onInterceptTochEventonTouchEvent
-
关于Android中windowleaked异常的理解 博客分类: Android_笔记 windowleakedandroiddialogactivity
-
关于使用ActivityGroup实现活动跳转带来的问题 博客分类: Android_笔记 ActivityGroup子活动跳转Tab
-
Android中的OnMeasure及OnLayout 博客分类: Android_笔记 androidonLayoutonMeasure
-
Android中传送序列化对象出现的ClassNotFoundException解决办法 博客分类: Android AndroidClassNotFoundException序列化
-
转化为当前的日期和时间 博客分类: android学习 android转化为当前时间日期
-
装饰者模式--除继承外的另一种扩展方式 博客分类: 设计模式 android设计模式装饰者模式java.io
-
Android:Layout_weight的深刻理解 博客分类: Android AndroidLayout_weight
-
定制Android的Home 博客分类: Android AndroidXMLBlog.netHTML
-
定制Android的Home 博客分类: Android AndroidXMLBlog.netHTML