VisualStudio 2015和Xamarin,膨胀错误

时间:2017-04-04 14:17:33

标签: android visual-studio xamarin xamarin.android

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

<?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 / layout / 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”整个过程没有错误,但这不是我之前取得的结果。 任何帮助都会非常感激。

鲁道夫。

1 个答案:

答案 0 :(得分:0)

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

<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?