1

我需要创建一个顶部有 3dp 高度线/矩形的可绘制对象,一个不透明度为 70% 的黑色矩形,底部有 2dp 高度线/矩形。我怎样才能做到这一点?

这是我到现在为止能做的

如果我将颜色设置为 #99000000,就会发生这种情况

这是我正在使用的代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="0dp" android:left="0dp" android:right="0dp">
        <shape android:shape="rectangle" >
            <size android:height="3dp"></size>
            <solid android:color="#C81F25"></solid>
        </shape>
    </item>
    <item android:top="2dp">
        <shape android:shape="rectangle">
            <solid android:color="#99000000"></solid>
        </shape>
    </item>

</layer-list>

PS:忽略图像周围的灰色渐变,它来自Android Studio预览。

4

2 回答 2

0

是否可以使用线性布局构建没有可绘制对象的布局。我不知道您下面两种情况中的哪一种:

  1. 在顶部布局中有一个黑色 alphamask,顶部和底部边距为 2dp/3dp,嵌套在红色布局中。

  2. 在底部布局中,黑色 alphamask 顶部有一个 3dp 高度的矩形,alpha 掩码下方有一个 2dp 高度的矩形。

线性布局

`

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="2dp"
        android:layout_marginTop="3dp"
        android:background="#9000" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />
    </LinearLayout>
</LinearLayout>`

或者

`

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="#C81F25" >
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#9000" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Content"
            android:textColor="@android:color/white" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#C81F25" >
    </LinearLayout>
</LinearLayout>`
于 2014-03-18T13:05:04.100 回答
0

案例1:另一个矩形内的矩形。

案例 2:3 个矩形,其中 2 个是透明的,具有负填充和描边。在 Eclipse 预览中,案例 2 显示错误,但它是正确的,并且在部署时有效。

案例 1:可绘制文件夹中的 actionbarbg.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#F00" />
        </shape>
    </item>
    <item android:top="3dp" android:right="0dp" android:bottom="2dp"
        android:left="0dp">
        <shape android:shape="rectangle">
            <solid android:color="#9000" />
        </shape>
    </item>
</layer-list>

案例2:(有点像黑客)

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

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#9000" />
        </shape>
    </item>
    <item
        android:top="-2dp"
        android:left="-2dp"
        android:right="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />

            <stroke
                android:width="2dp"
                android:color="#C81F25" />
        </shape>
    </item>
    <item
        android:left="-3dp"
        android:right="-3dp"
        android:bottom="-3dp">
        <shape>
            <solid android:color="@android:color/transparent" />

            <stroke
                android:width="3dp"
                android:color="#C81F25" />
        </shape>
    </item>

</layer-list>
于 2014-03-18T14:03:49.897 回答