layer-list drawable未正确绘制

时间:2014-06-09 07:59:08

标签: android xml user-interface drawable

我正在尝试为我的Android应用创建一个简单的图层列表drawable。当我将drawable设置为ImageView的src时,它未正确绘制:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="20dp">
        <shape android:shape="oval">
            <solid android:color="@color/dark_gray" />
        </shape>
    </item>

    <item android:left="20dp">
        <shape android:shape="oval">
            <solid android:color="@color/dark_gray" />
        </shape>
    </item>
</layer-list>

只有两个椭圆形,彼此有一点偏移。没什么特别的(只是一个测试),但它不起作用。

android:left|right|bottom|top似乎是个问题。如果我只使用这些命令,则绘制正确的drawable。如果使用两个或更多,则ImageView保持为空。

使用:

   <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:top="20dp">
         <shape android:shape="oval">
            <solid android:color="@color/dark_gray" />
         </shape>
      </item>

      <item>
         <shape android:shape="oval">
            <solid android:color="@color/dark_gray" />
         </shape>
      </item>
   </layer-list>

不起作用(就像第一个例子一样):

   <?xml version="1.0" encoding="utf-8"?>
   <layer-list xmlns:android="..." >
      <item android:top="20dp" android:left="20dp">
         <shape android:shape="oval">
            <solid android:color="@color/dark_gray" />
         </shape>
      </item>
   </layer-list>

这里有什么问题?

编辑: @ Rod_Algonquin 我使用一个非常简单的布局来测试drawable:

<?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:layout_gravity="center"
    android:background="#aaa" >

    <ImageView
        android:id="@+id/image_logo"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/testDrawable" >
    </ImageView>
</LinearLayout>

似乎android:left|right|bottom|top参数的数量不是问题的根源,而是使用的具体值。

此drawable工作正常,并且:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="2dp">
        <shape android:shape="oval">
            <solid android:color="#0f0" />  
        </shape>
    </item> 
</layer-list>

这个没有画任何东西(ImageView只是透明的):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="1dp">
        <shape android:shape="oval">
            <solid android:color="#0f0" />  
        </shape>
    </item> 
</layer-list>

这里唯一的区别是android:top的价值。 1dp不起作用。 2dp没有任何问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

问题是您使用layer-list drawable作为ImageView的图像资源。 android:src只接受不是抽签的图像,因此不会给你任何东西。

<强>溶液

而不是将其放在android:src中,而不是放在可以自由使用drawable的background中。

 <ImageView
    android:id="@+id/image_logo"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="@drawable/testDrawable" >
</ImageView>