【问题标题】:Can I use multiple shapes in one Android drawable?我可以在一个 Android drawable 中使用多个形状吗?
【发布时间】:2011-01-19 20:46:55
【问题描述】:

我想要做的是定义一个通用背景,以便在 LinearLayout 中使用,它经常在我的应用程序的许多 Activity 中使用。此特定布局是显示在每个活动顶部的标题。

我要做的是创建一个可绘制的对象,它用渐变填充线性布局,并在渐变下方有一条水平线。

有谁知道这是否可能,或者我是否必须只使用嵌套布局来做这种事情。

我对可绘制 xml 的尝试是

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#AA000000" android:endColor="#AA333333"
        android:angle="270" />
</shape>
</item>
<item>
<shape android:shape="line">
    <stroke android:width="3dp" android:color="#FFFFFFFF"
            android:dashWidth="1dp" android:dashGap="2dp" />
    <size android:height="5dp" />
</shape>
</item>
</selector>

【问题讨论】:

    标签: android layout drawable


    【解决方案1】:

    Drawable 接受多个形状,(总是在其他文件中定义)如果我理解你的问题,也许你可以做一个 Layer drawable(这会在彼此之上绘制多个底层 drawable)

    我在这里写这个,所以,我没有测试,但是试试这个并阅读这个很棒的文档。

    <?xml version="1.0" encoding="utf-8"?>
        <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:drawable="@drawable/shape_7"/>
            <item android:drawable="@drawable/shape_1"/>
        </layer-list>
    

    the android complete xml resources

    干杯

    【讨论】:

    • 是否也可以将它们设置在另一个下方(在 Y 坐标中)?
    • 为每个项目添加android命名空间schemas.android.com/apk/res/android" ... />及其完美
    • 好点@Philiiiiiipp。但是,在层列表中添加命名空间就足够了,而不是将其添加到列表中的每个项目中。像这样:schemas.android.com/apk/res/android">.
    • 任何人都有解决方案来创建一个在另一个下方的形状(在 Y 坐标中)?
    【解决方案2】:

    使用gravity在layer-list中设置items。

    垂直方向使用: 机器人:重力=“顶部” 机器人:重力=“中心” 机器人:重力=“底部” 对于水平方向使用: 机器人:重力=“左” 机器人:重力=“中心” 机器人:重力=“对”
    <layer-list
               xmlns:android="http://schemas.android.com/apk/res/android">
              <item>
                    <bitmap
                       android:src="@drawable/top_img"
                       android:gravity="top"/>
              </item>
              <item>
                    <bitmap
                       android:src="@drawable/center_img"
                       android:gravity="center"/>
              </item>
              <item>
                    <bitmap
                       android:src="@drawable/bottom_img"
                       android:gravity="bottom"/>
              </item>
    </layer-list>
    

    确保父元素有足够的空间容纳所有项目! 否则它们会相互重叠

    【讨论】:

    • 我使用两个答案结合@Franco
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多