如何使用布局作为选择器资源

时间:2013-07-30 11:06:32

标签: android layout

我正在尝试使用布局作为选择器但是在扩展视图和应用程序给出时出错 ANR低于

  

org.xmlpull.v1.XmlPullParserException:二进制XML文件行#2:   无效的可绘制标记LinearLayout   在   android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:877)

你有什么想法

谢谢

抽拉/ selector_map_all.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:drawable="@layout/map_atm_selected" android:state_selected="true" />
      <item android:drawable="@layout/map_atm" />
</selector>

布局/ map_atm.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aresource="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/List_color2"
    android:gravity="center"
    android:orientation="horizontal" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ico_info" />

    <TextView
        style="@style/TextViewNormalOpac"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="Hepsi" />

</LinearLayout>

布局/ map_atm_selected.xml

<? xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aresource="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/List_color2"
    android:gravity="center"
    android:orientation="horizontal" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ico_info" />

    <TextView
        style="@style/TextViewNormalOpac"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="Hepsi" />

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您的异常的原因是因为您无法在选择器中使用LinearLayout,因为StateListDrawable类(实际上是选择器)可以保持仅状态为Drawable对象,但是LinearLayout不是Drawable。您可以在createFromXmlInner方法或here内检查可用的Drawables(除普通图片外)。