2017-04-04 49 views
1

我正面临着这个(对我来说)奇怪的问题。 经过几年的Xamarin Studio之后,我选择使用VisualStudio 2015的插件。我目前正在开发一个现场维护项目,所以这是我第一次迁移。在解决了RecyclerView和CardView小部件的一些问题之后,我面临着这个新问题,Xamarin Studio从未见过。 我有一个ViewHolder项目的简单布局,它使用选择器作为背景。这是选择(RES /颜色/ item_bg_selector.xml):VisualStudio 2015和Xamarin,膨胀错误

<?xml version="1.0" encoding="UTF-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:color="#fffff2e6" /> 
    <item android:state_selected="true" android:color="#ffabfdc3" /> 
    <item android:color="@android:color/transparent" /> 
</selector> 

这是此项目的布局(RES /布局/ rowSpare.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="2dp" 
    android:background="@color/item_bg_selector"> 
    <TextView 
     android:id="@+id/tvSpareCode" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareCode" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSpareDescription" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareDescPrice" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSparePrice" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/sparePrice" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSpareQuantity" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareQuant" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
</LinearLayout> 

这是我的自定义摘录适配器上的错误出现了:

public class adSpareList : RecyclerView.Adapter 
    { 
.... 
     public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) 
     { 
      View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.rowSpare, parent, false); 
      itemView.Clickable = true; 
      SpareItemViewHolder vh = new SpareItemViewHolder(itemView, OnClick); 

      return (vh); 
     } 
    } 

每当执行时,OnCreateView的第一行给出了这样的错误:

Unhandled Exception 
Android.Views.InflateException: Bonary XML file line #1: Error inflating class <unknown>. 

没有其他信息。 Xamarin Studio的相同布局运行良好。如果我删除android:background =“@ color/item_bg_selector”,或者用一个简单的android:background =“@ android:color/transparent”替换它,整个过程没有错误,但它不是我之前获得的结果。 任何帮助将非常感激。

Rodolfo。

+0

你在哪里把你的选择?如果它位于drawable文件夹下,也许可以尝试'@ drawable/item_bg_selector'。 –

回答

0

我不知道Xamarin是如何工作的,同样的东西在Visual Studio中不起作用,但无论如何,您使用的是颜色状态列表,但颜色状态列表不能用作背景。你必须创建状态列表而不是背景。因此,更改您的代码是这样的:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#fffff2e6" /> 
    </shape> 
</item> 
<item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffabfdc3" /> 
    </shape> 
    </item> 
    <item android:color="@android:color/transparent" /> 
</selector> 

请参阅开发者页面:https://developer.android.com/guide/topics/resources/color-list-resource.html

与同类贴出的问题:How to set custom button state background color?

+0

你说得对。实际上,在Xamarin Studio中,xml是一个可绘制的列表(每个drawable都是一个简单的颜色);也许它不能用简单的颜色工作,因为它是一个LinearLayout背景。无论如何,我必须删除默认项目“@android:color/transparent”,就像我离开它,我得到了同样的错误。谢谢。 –

相关问题