2014-06-26 170 views
2

我想在抽屜裏面使用相對佈局,這樣我可以包含一個列表視圖和一個網格視圖。收到以下錯誤運行時:抽屜佈局裏面的相對佈局:相對佈局參數不能被抽成抽屜佈局參數

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

後完整的錯誤堆棧跟蹤 – Javanator

+0

嘿,是你能解決這個? –

回答

0

用途:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

您使用:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_relative_layout); 

DrawerLayout總是從android.support.v4.widget.DrawerLayout視圖膨脹,而不是從包含在抽屜中的佈局膨脹。

+0

我在我的主要活動中使用了drawer_layout。 – rahul

+0

你能分享你的相關主要活動代碼嗎? –

1

請檢查您的java代碼。確保你使用了正確的佈局參數。您可能指的是抽屜佈局以外的佈局。

可能會發生在這裏:

DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

或者在這裏:

drawerLayout.closeDrawer(drawerLayout); 
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 上傳完整的項目,希望這將有助於