我正在尝试创建一个简单的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>
如何在可绘制XML定义文件中指定每个形状的宽度应为50%?类似 android:width =“50%”。
(我正在使用Android 3.0,但我认为这是一个普遍的Android问题。)
P.S:您可以在CSS或XAML中执行此操作。
答案 0 :(得分: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(...)
中自行执行计算。
请参阅以下两个问题及其中的链接:
答案 1 :(得分:3)
没有真正的百分比设置,但您可能会接近。
似乎最简单的方法是使用图像作为背景绘图,然后只做一个黑白分割图像。
我知道拆分任何东西的唯一另一种方法是使用2个视图,每个视图都有自己的bg颜色,并且每个视图给出了android:layout_weight属性(即50/50)相同的正值。然后他们将分割可用空间。
希望这有帮助!
答案 2 :(得分:3)
android:layout_weight =“。20”是以百分比实现的最佳方式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/logTextBox"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=".20"
android:maxLines="500"
android:scrollbars="vertical"
android:singleLine="false"
android:text="@string/logText" >
</TextView>
</LinearLayout>
答案 3 :(得分:2)
我发现这样做的方法是创建我自己继承自RelativeLayout的类,我在其中覆盖onMeasure方法。在此阶段,视图的高度已知,因此我获取了背景,并使用setLayerInset手动设置项目的插入。
LayerDrawable bg = (LayerDrawable)getBackground();
int h = getMeasuredHeight();
bg.setLayerInset(1, 0, 0, 0, h/2);
这种方法虽然有点麻烦。在大多数情况下,克里斯提供的答案应该足够了。
答案 4 :(得分:0)
swapnil声明的最佳方法是在LinearLayout中使用layout_weight。 如果您要横向移动,请将layout_width设置为“fill_parent”,然后将layout_weight设置为您想要的百分比。从下面的内容开始,使用layout_width值来了解它(或添加更多视图以便更好地理解)。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation = "horizontal" >
<View
android:layout_width="fill_parent"
android:layout_height="30dip"
android:layout_weight="0.5"
android:background="#aaffaa" />
<View
android:layout_width="fill_parent"
android:layout_height="30dip"
android:layout_weight="0.5"
android:background="#aaaaff" />
</LinearLayout>