Android Drawable:在XML文件中指定形状宽度(以百分比表示)?

Ale*_*ang 25 xml android shape drawable

我正在尝试创建一个简单的Drawable,我想将其设置为视图的背景(使用setBackgroundDrawable).我只想将drawable的背景划分为2个相等的矩形(50% - 50%),第一个想要用黑色填充,第二个用白色填充:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/back_color_1">
        <shape android:shape="rectangle">
          <solid android:color="#000000" />
        </shape>
    </item>
    <item android:id="@+id/back_color_2">
        <shape android:shape="rectangle">
          <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

如何在可绘制XML定义文件中指定每个形状的宽度应为50%?像android:width ="50%"之类的东西.

(我正在使用Android 3.0,但我认为这是一个普通的Android问题.)

PS:您可以在CSS或XAML中执行此操作.

Ale*_*dam 10

您无法指定百分比.您需要为其指定Dimension值.

android:width在这里定义:http://developer.android.com/reference/android/R.attr.html#width:

(强调我的)

必须是维值,这是一个附加单位的浮点数,例如"14.5sp".可用单位是:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),in(英寸),mm(毫米).

有关每种维度类型的定义,请参阅:http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

您需要创建自己的属性(请参阅styleable)并自行执行计算onDraw(...).

请参阅以下两个问题及其中的链接示例:


chr*_*ris 5

没有真正的百分比设置,但您可能会接近。

似乎实现这一目标的最简单方法是使用图像作为可绘制的背景,然后只进行黑白分割图像。

我知道拆分任何东西的唯一另一种方法是使用 2 个视图,每个视图都有自己的 bg 颜色,并且每个视图都为 android:layout_weight 属性(即 50/50)赋予相同的正值。然后他们将分割可用空间。

希望这可以帮助!