我在Xamarin Android应用中将textview作为标题添加到列表视图中。 按照ericosg对this SO question的回答中的说明,我将textview放在一个单独的axml文件中,然后尝试将其作为标题添加到我的列表视图中。
运行应用程序会在活动尝试给文本视图膨胀的行中收到以下错误:
[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Android.Content.Res.Resources+NotFoundException: Exception of type 'Android.Content.Res.Resources+NotFoundException' was thrown.
.
.
.
[MonoDroid] --- End of managed exception stack trace ---
[MonoDroid] android.content.res.Resources$NotFoundException: Resource ID #0x7f050006 type #0x12 is not valid
[MonoDroid] at android.content.res.Resources.loadXmlResourceParser(Resources.java:2250)
etc.
这是我的代码:
在Activity .cs文件中:
myListView = FindViewById<ListView>(MyApp.Resource.Id.MyList);
Android.Views.View myHeader =
this.LayoutInflater.Inflate(MyApp.Resource.Id.QuestionText, myListView);
myListView.AddHeaderView(myHeader);
ListView定义:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/MyList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</RelativeLayout>
标题定义:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/QuestionText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableTop="@+id/MyImage" />
答案 0 :(得分:3)
一些事情:
您正在尝试通知ID资源而不是布局:
Android.Views.View myHeader = this.LayoutInflater.Inflate(MyApp.Resource.Id.QuestionText, myListView);
Inflate
对LayoutInflater
的调用只接受Resource.Layout
个元素。将其更改为:
Android.Views.View myHeader = this.LayoutInflater.Inflate(Resource.Layout.Header, myListView);
其次,在您的Header.xml布局文件中,TextView android:drawableTop
不接受ID引用,因此当InflateException
尝试构建布局时,它将抛出LayoutInflator
。
机器人:drawableTop
要在文本上方绘制的drawable。
可以是“@ [+] [package:] type:name”形式的另一个资源的引用,也可以是“?[package:] [type:] name”形式的主题属性。
可以是“#rgb”,“#arbb”,“#rrggbb”或“#aarrggbb”形式的颜色值。
将此更改为对有效颜色或可绘制(@ drawable / MyImage)或内联颜色声明(#fff)的引用。
最后,如果不使用适配器,则无法将子视图或标题视图添加到ListView:
考虑重新阅读Xamarin docs for ListViews and Adapters以更好地理解主题。