我自定义LinearLayout,发生了xml错误
这个代码是xamarin(C#)代码,但xml代码就像一个Java。
写下代码。
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.eappandroid.phone1.OpendCheckLinearLayout
首先,Unhandled Exception行是(在LeftDrawerMenuItemAdapter类中)(在GetView中)
convertView = ((Activity)Context).LayoutInflater.Inflate(Resource.Layout.LeftDrawerMenu_List_Item, null);
LeftDrawerMenu_List_Item xml
<?xml version="1.0" encoding="utf-8"?>
<com.eappandroid.phone1.OpendCheckLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="52dp"
android:background="@drawable/menu_item_background_color_pressed"
android:minHeight="25px"
android:minWidth="25px"
android:id="@+id/left_drawer_list_item_layout"
android:orientation="horizontal">
<ImageView
android:id="@+id/left_drawer_list_icon"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="center"
android:layout_marginLeft="12dp"
android:gravity="center" />
<TextView
android:id="@+id/left_drawer_list_item_text"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:gravity="left|center"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_weight="1"
android:text="item"
android:textColor="@drawable/menu_item_title_color_pressed"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/left_drawer_noti_alert"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_gravity="center"
android:layout_marginRight="18dp"
android:background="@drawable/menu_icon_noti_new_alert"
android:gravity="center" />
</com.eappandroid.phone1.OpendCheckLinearLayout>
OpendCheckLinearLayout类
namespace EAppAndroid.Protype.LeftDrawerMenu2
{
public class OpendCheckLinearLayout : LinearLayout
{
private static readonly int[] STATE_MENU_OPEND = { Resource.Attribute.state_menu_opend };
public bool menuOpen = false;
public OpendCheckLinearLayout(Context context)
: base(context, null)
{
}
public OpendCheckLinearLayout(Context context, Android.Util.IAttributeSet attributeSet)
: base(context, attributeSet)
{
}
public OpendCheckLinearLayout(Context context, Android.Util.IAttributeSet attributeSet, int defStyle)
: base(context, attributeSet, defStyle)
{
}
protected override int[] OnCreateDrawableState(int extraSpace)
{
if (menuOpen)
{
int[] drawableStates = base.OnCreateDrawableState(extraSpace + 1);
MergeDrawableStates(drawableStates, STATE_MENU_OPEND);
return drawableStates;
}
else
{
return base.OnCreateDrawableState(extraSpace);
}
}
public void setMenuOpen(bool menuOpen)
{
if (this.menuOpen != menuOpen)
{
this.menuOpen = menuOpen;
}
}
}
}
感谢您的帮助
答案 0 :(得分:1)
实际上,膨胀异常实际上并不是问题所在,但它实际上来自于布局中的另一个更深层次的问题,然后将其包含在InflateException
中。一个常见的问题是在尝试通过加载ImageView
加载可绘制资源时出现内存不足异常。如果其中一个资源具有较高的像素分辨率,则需要大量内存才会导致膨胀异常。
基本上,验证drawables图像中的像素分辨率是布局所需的最小值。它帮了我很多次。
我希望它对你也有用。
答案 1 :(得分:0)
您的命名空间似乎错了。
您将com.eappandroid.phone1.OpendCheckLinearLayout
放入xml,但在您的OpendCheckLinearLayout类中,您有EAppAndroid.Protype.LeftDrawerMenu2
,因此您应该放置com.eappandroid.Protype.LeftDrawerMenu2.OpendCheckLinearLayout
编辑:
似乎xml中只需要命名空间,因此您应该放置eappandroid.Protype.LeftDrawerMenu2.OpendCheckLinearLayout