我正在尝试在抽屉内使用相对布局,以便我可以包含列表视图和网格视图。运行时收到以下错误:
Logcat错误:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
XML:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- ListView to display slider menu -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="240dp"
android:layout_height="fill_parent"
android:layout_gravity="start"
android:id="@+id/drawer_relative_layout"
>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"
/>
<GridView
android:id="@+id/images_drawer"
android:layout_width="240dp"
android:layout_height="fill_parent"
android:layout_below="@id/left_drawer"
android:layout_gravity="left"
android:choiceMode="singleChoice"
android:background="@color/list_background"
android:layout_margin="5dp"
android:columnWidth="100dp"
android:drawSelectorOnTop="true"
android:numColumns="2"
android:stretchMode="columnWidth"
android:horizontalSpacing="5dp"
android:verticalSpacing="5dp"
/>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:1)
请检查您的java代码。确保使用正确的布局参数。您可能指的是抽屉布局以外的布局。
可能会发生在这里:
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
或者在这里:
drawerLayout.closeDrawer(drawerLayout);
答案 1 :(得分:1)
我刚刚完成POC运行尝试一下, 这是布局
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!--
As the main content view, the view below consumes the entire
space available using match_parent in both dimensions.
-->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!--
android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
The drawer is given a fixed width in dp and extends the full height of
the container. A solid background is used for contrast
with the content view.
-->
<LinearLayout
android:id="@+id/left_drawer"
android:layout_width="220dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:orientation="vertical"
android:background="@android:color/holo_orange_light">
<ImageView
android:id="@+id/ivwLogo"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/medicinecarticon" />
<CheckBox
android:id="@+id/jji"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_toRightOf="@+id/ivwLogo"
android:text="huhuuhul" />
</RelativeLayout>
<ListView
android:id="@+id/left_drawer_child"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</LinearLayout>
对于主要活动,请下载完整的代码库 https://drive.google.com/file/d/0B_1gIYJI3B4FWDE0bGpMZnhGQmc/view?usp=sharing 上传的完整项目希望有所帮助
答案 2 :(得分:0)
使用:
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
您正在使用:
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_relative_layout);
DrawerLayout始终从android.support.v4.widget.DrawerLayout
视图中膨胀,而不是从您在抽屉中包含的布局中膨胀。