我面对这个(对我来说)奇怪的问题。 经过几年的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”整个过程没有错误,但这不是我之前取得的结果。 任何帮助都会非常感激。
鲁道夫。
答案 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