`
秦朝古月
  • 浏览: 227085 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android shape中的padding无效

 
阅读更多
项目要求使用XML制作背景,背景是一个圆形和圆角矩形的拼接,还要求有边框。如下图:


在网上调查了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://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是角度渐变,按照角度来变换颜色。
  • 大小: 17 KB
0
3
分享到:
评论
1 楼 Mybeautiful 2015-01-07  
碰到同样问题,谢谢分享。

相关推荐

    android shape的使用及渐变色、分割线、边框、半透明阴影

    Android Shape是一种在Android系统中使用的图形形状控件,可以用于创建各种形状的视图控件,例如矩形、椭圆、线条、圆环等。Shape控件可以使用xml文件来定义,该文件可以包含多个属性来控制形状的外观和行为。 首先...

    Android中使用Shape自定义形状

    在Android开发中,Shape是XML布局文件中的一种元素,它允许开发者自定义各种图形,如矩形、椭圆、线和梯形等,用于创建丰富多彩的背景或按钮样式。本教程将深入探讨如何在Android中使用Shape来实现自定义形状。 1. ...

    android shape样式

    在Android开发中,Shape是XML资源文件中定义的一种图形元素,它可以用来创建各种形状,如矩形、椭圆、线和路径,同时支持自定义样式,包括圆角、虚线边框、部分圆角以及颜色的渐变效果。这篇内容将深入探讨Android ...

    android动态改变shape的颜色值

    在Android开发中,Shape是XML布局文件中定义的一种图形元素,通常用于创建自定义的背景、按钮或者其他UI组件。它可以包含各种形状(如矩形、圆形、线等),并可以通过填充色、边框色以及边框宽度来定制样式。本教程...

    Android-android-shape-imageview-图片圆角三角五角圆形多角

    5. **集成到项目**:要将`android-shape-imageview`库集成到你的Android项目中,你需要在`build.gradle`文件中添加依赖,例如: ```gradle implementation 'com.siyamed.shapeimageview:shapeimageview:版本号' `...

    android shape

    Android 中的 Shape 是一个非常重要的概念,它用于定义控件的显示属性,如颜色、渐变、描边、圆角、间隔等。今天,我们将详细地介绍 Shape 的使用方法和相关知识点。 首先,看下面的代码: ```xml &lt;shape&gt; &lt;!-- ...

    android Shape介绍

    在Android开发中,Shape是XML布局文件中定义的一种图形元素,它允许开发者创建自定义的背景形状,以增强UI设计的美观性和功能性。本篇文章将深入探讨Android Shape的使用,包括它支持的四种基本图形以及三种渐变颜色...

    Android shape 属性深入用法

    在Android开发中,Shape是XML绘图资源的一种类型,它允许开发者定义自定义形状,用于绘制背景、按钮等UI元素。本篇文章将深入探讨Android Shape属性的使用方法,帮助开发者们更好地利用这一强大的功能。 首先,...

    Android shape属性详解

    在Android开发中,Shape是XML绘图的一种基本元素,它允许开发者定义自定义的图形,如矩形、椭圆、线或梯形等,并应用于视图背景、按钮样式或者自定义视图等。Shape对象是Android图形绘制的核心部分,通过调整其属性...

    android中shape的使用

    在Android开发中,Shape是XML布局资源的一种,用于创建各种图形,如矩形、椭圆、线和梯形等,通常用作自定义View的背景或者Drawable对象。它提供了丰富的属性来实现颜色填充、边框样式以及渐变效果,极大地增强了...

    Android-shape标签的使用

    在Android开发中,Shape标签是XML绘图API的一部分,它允许开发者创建自定义形状,用于绘制背景、按钮、边框等界面元素。Shape标签的强大之处在于它可以定义多种形状,包括矩形、椭圆、线和路径,从而实现丰富的界面...

    Android Shape实例

    在Android开发中,Shape是XML绘图的一种方式,它允许开发者定义各种形状并用作视图的背景。本文将深入探讨Android Shape的实现及其在实际应用中的实例。 首先,我们来了解一下Shape的基本元素。在Android的`res/...

    android XML shape优化界面

    在Android开发中,XML Shape是UI设计中一个重要的组成部分,它允许开发者通过XML定义图形,如矩形、椭圆、线以及自定义形状,来创建各种背景和装饰元素。本教程将深入探讨如何利用XML Shape优化Android应用的界面,...

    Android_shape

    在Android开发中,`shape`元素是经常用来创建自定义图形和背景的关键工具。它属于Android的图形绘制层,主要用于定义各种形状,如矩形、圆形、椭圆、线等,并支持填充颜色、渐变、边框等效果。在本文中,我们将深入...

    Android控件美化之Shape的使用

    本文将详细介绍`Shape`的各种属性及其在Android中的应用。 #### `Shape`的基本结构与属性 `Shape`主要由以下几个部分组成: 1. **实心(Solid)**:用于定义形状的填充颜色。 2. **渐变(Gradient)**:用于定义...

    Android之shape实现控件圆角、背景等

    在Android开发中,Shape是XML绘图的一种方式,它允许开发者自定义视图的背景,包括设置圆角、颜色、边框等属性。本篇文章将深入探讨如何利用Shape来实现控件的圆角、背景以及边框效果。 一、Shape的基本结构 Shape...

    Android shape 属性

    在Android开发中,Shape是XML绘图的一种基本元素,它允许开发者定义各种形状,并用于自定义View的背景、按钮样式、边框等视觉效果。这篇博客详细介绍了Android中Shape属性的使用,通过以下四个主要部分来阐述: 1. ...

    android shape实现阴影或模糊边效果

    在上面的代码中,我们使用 `android:background` 属性将 Shape 应用到我们的视图中。 使用 Android Shape 实现阴影或模糊边效果非常简单,只需要定义 Shape 并将其叠加起来即可。这种方式可以让我们的代码更加简洁...

    android 代码实现shape效果

    在Android开发中,Shape是用于绘制自定义图形的一种XML元素,通常被用来创建各种背景,如矩形、椭圆、线或边框等。在本主题中,我们将深入探讨如何通过代码实现`shape`效果,特别是使用`GradientDrawable`来创建渐变...

Global site tag (gtag.js) - Google Analytics