2011-08-03 3 views
0

Привет, у меня есть форма, и я пытаюсь включить это в свой макет, но он не отображается?Android include shape in xml

Это моя форма 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

Попробуйте изменить color="#ff0000" на android:color="#ff0000". Это должно вызвать видимость прямоугольника. Как только вы это сделаете, вы обнаружите, что появляется красный прямоугольник, но он заполняет родительское представление по вертикали. Это потому, что вы использовали android:layout_height="wrap_content", хотя прямоугольник не имеет фиксированной высоты. Я бы исправил это, используя другое значение для android:layout_height в вашем макете.

Кроме того, похоже, что вы разместили файл damage.xml в каталоге макета. Так как форма является вытягиваемой, вы должны поместить ее в каталог, пригодный для рисования, и укажите в своем макете @layout/damage.

Update:

Используя следующий код в 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> 
+0

андроид: цвет = "", похоже, не работает. Я также переместил файл damage.xml в папку с возможностью переноса. Я хочу, чтобы прямоугольник занимал всю высоту строки списка, поэтому я выбрал wrap_content. Какую другую ценность я могу использовать? – Bear

+0

Если вы хотите, чтобы прямоугольник занимал всю высоту строки списка, вы, вероятно, должны использовать layout_height = "match_parent". –

+0

Отлично работает сейчас :-) Большое спасибо – Bear

 Смежные вопросы

  • Нет связанных вопросов^_^