不,没有人回答这个问题,问题仍然存在......这里的问题是关于同一问题的另一个症状(请参阅下面的评论):
至少在Monodroid中,当从布局中膨胀自定义视图时,有时需要将其包装在ViewGroup(即LinearLayout)中以便不会出现异常,有时则不会。
我想知道是否有人熟悉这种情况,如果它也发生在“原始”Android中(即没有Monodroid)?
我总是先尝试不用,如
TextView1.axml
<?xml version="1.0" encoding="utf-8"?>
<Monodroid.Activity1.TextView1
android:id="@+id/text_view1"
android:layout_width="300dp"
android:layout_height="50dp"/>
但如果我得到通胀异常,那么我将不得不把它包起来
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Monodroid.Activity1.TextView1
android:id="@+id/text_view1"
android:layout_width="300dp"
android:layout_height="50dp"/>
</LinearLayout>
,其中
public class TextView1 : TextView
{
public TextView1 (Context context) : base(context) { }
public TextView1 (Context context, IAttributeSet attributes) : base(context, attributes) { }
public TextView1 (Context context, IAttributeSet attributes, int defStyle) : base(context, attributes, defStyle) { }
}
谢谢。
此布局文件膨胀时不包含viewgroup:
<?xml version="1.0" encoding="utf-8"?>
<fieldinspection.droid.views.custom.FieldInput
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RecordDataFieldInput"
style="@style/FieldInput"
android:layout_marginRight="0dip"/>
并且这个(内部类PagedFragmentFieldInput)没有(它需要在LinearLayout或其他通胀异常中):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_record_data_field_input2_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<FieldInspection.Droid.Views.ComplaintView.PagedFragmentRecordDataFieldBox.PagedFragmentFieldInput
android:id="@+id/RecordDataFieldInput"
style="@style/FieldInput"
android:layout_marginRight="0dip"/>
</LinearLayout>
它读作PagedFragment-RecordDataFieldBox,它是一个位于ViewPager中的片段内的RecordDataFieldBox。
答案 0 :(得分:1)
我拿了你的第一个样品并在这里试了一下。我没有错误包装它。
<强> TextViewInherit.cs:强>
using Android.Content;
using Android.Util;
using Android.Widget;
namespace InflationShiz
{
public class TextViewInherit : TextView
{
public TextViewInherit(Context context, IAttributeSet attrs) :
this(context, attrs, 0)
{
}
public TextViewInherit(Context context, IAttributeSet attrs, int defStyle) :
base(context, attrs, defStyle)
{
}
}
}
<强> One.axml:强>
<?xml version="1.0" encoding="utf-8"?>
<inflationshiz.TextViewInherit
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<强> Two.axml:强>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<inflationshiz.TextViewInherit
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
当我在我的Activity
中充气时,两者都有效:
var one = LayoutInflater.Inflate(Resource.Layout.One, null);
var two = LayoutInflater.Inflate(Resource.Layout.Two, null);
我发现很难重现你的问题;您的代码分散在3个不同的SO问题中,甚至更加分散,因为您已经创建了自己问题的答案,并在此处尝试详细说明您的初始问题。