首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android中为渐变<shape>添加填充?

如何在Android中为渐变<shape>添加填充?
EN

Stack Overflow用户
提问于 2009-10-26 06:51:53
回答 3查看 50.1K关注 0票数 53

我有一个带有渐变的形状,我将其用作ListView项目之间的分隔符。我把它定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

<gradient
    android:startColor="#ccd0d3"
    android:centerColor="#b6babd"
    android:endColor="#ccd0d3"
    android:height="1px"
    android:angle="0" />

</shape>

我想在渐变的两边添加6个像素的填充,这样它就不会从屏幕的边缘延伸到另一个边缘。

然而,无论我将android:left="6px"android:right="6px"放在哪里,它似乎都不起作用。我可以把它放在<shape>元素、<gradient>元素中,也可以放在<shape>的一个单独的<padding>子元素中,它不会改变任何东西。

如何在列表分隔符的左侧和右侧添加填充?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-26 06:57:33

一种解决方案似乎是用另一个指定适当填充的drawable“包装”我的drawable。

例如,list_divider.xml将为:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="6dp"
        android:right="6dp"
        android:drawable="@drawable/list_divider_inner" />

</layer-list>

然后list_divider_inner.xml将成为原始的可绘制部分:

<?xml version="1.0" encoding="UTF-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

<gradient
    android:startColor="#ccd0d3"
    android:centerColor="#b6babd"
    android:endColor="#ccd0d3"
    android:height="1px"
    android:angle="0" />

</shape>

这会导致两个文件指定一个简单的分隔符。我不知道有没有办法只用一个文件就能做到。

票数 23
EN

Stack Overflow用户

发布于 2010-08-28 08:46:17

我想你可以这样组合它:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:left="6dp"
          android:right="6dp">

        <shape android:shape="rectangle">
            <gradient android:startColor="#ccd0d3"
                      android:centerColor="#b6babd"
                      android:endColor="#ccd0d3"
                      android:height="1px"
                      android:angle="0"/>
        </shape>
    </item>
</layer-list>
票数 139
EN

Stack Overflow用户

发布于 2012-12-07 02:19:07

另一种使用inset的解决方案:

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="6dp"
    android:insetRight="6dp" >

    <shape   
        android:shape="rectangle">

    <gradient
        android:startColor="#ccd0d3"
        android:centerColor="#b6babd"
        android:endColor="#ccd0d3"
        android:height="1px"
        android:angle="0" />

    </shape>

</inset>
票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1622364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档