Android包含xml中的形状

时间:2011-08-03 12:35:10

标签: android view android-listview shape

你有形状,我试图将其包含在我的布局中,但它没有显示?

这是我的形状xml“damage.xml”

<shape xmlns:android="http://schemas.android.com/apk/res/android"
shape="rectangle">
<solid color="#ff0000" />
<stroke width="3dp" color="#ff0000" />

这是我的想法我需要在布局中包含Shape。

<?xml version="1.0" encoding="utf-8"?>

<View android:id="@+id/damage" android:background="@layout/damage"
    android:layout_width="5dip" android:layout_height="wrap_content">
</View>

<ImageView android:id="@+id/icon" android:layout_width="60px"
    android:layout_height="60px" android:layout_marginRight="6dip"
    android:src="@drawable/placeholder" />

<LinearLayout android:orientation="vertical"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:padding="6dip">

    <TextView android:layout_width="fill_parent" android:id="@+id/title"
        android:layout_height="wrap_content" android:text="Item Name"
        android:textStyle="bold" android:singleLine="true" android:textSize="16sp" />

    <ImageView android:id="@+id/rating" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:src="@drawable/rating_five" />


    <LinearLayout android:orientation="horizontal"
        android:layout_width="wrap_content" android:layout_height="wrap_content">

        <TextView android:layout_width="wrap_content" android:id="@+id/range"
            android:layout_height="wrap_content" android:text="Range"
            android:textStyle="bold" android:singleLine="true" android:textSize="16sp"
            android:paddingRight="5dip" />

        <TextView android:layout_width="fill_parent" android:id="@+id/condition"
            android:layout_height="wrap_content" android:text="Condition"
            android:textStyle="bold" android:singleLine="true" android:textSize="16sp" />

    </LinearLayout>
</LinearLayout>

然而什么都没画出来?我哪里错了。其次,在视图中设置形状的宽度和高度是正确的,还是应该在damage.xml中进行?例如

<shape xmlns:android="http://schemas.android.com/apk/res/android"
shape="rectangle">
<solid color="#ff0000" />
<size android:height="wrap_content" />
<size android:width="5dip" />
<stroke width="3dp" color="#ff0000" />

这里编译器抱怨wrap_content。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试将color="#ff0000"更改为android:color="#ff0000"。这应该导致矩形可见。执行此操作后,您会发现红色矩形显示,但它会垂直填充父视图。这是因为您使用了android:layout_height="wrap_content",即使矩形没有任何固定高度。我会通过在布局中使用android:layout_height的其他值来解决这个问题。

此外,您似乎已将damage.xml放置在布局目录中。由于形状是可绘制的,因此您应将其放在drawable目录中,并在布局中将其引用为@layout/damage

<强>更新

在damage.xml中使用以下代码会导致矩形显示正常。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
    <solid android:color="#f0f000" />
    <stroke android:width="3dp" android:color="#ff0000" />
</shape>