Reputation: 5070
I have tried several different versions of my layout but each of them is having some not working symptoms.
I just wanted to have a working slide menu.
Option one (nested linear layout in frame layout):
<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"
android:orientation="vertical"
>
<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"
/>
<LinearLayout
android:visibility="gone"
android:background="@drawable/background_parchment"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/challengerWandIdEt"
android:enabled="true"
android:hint="WandId of challenger"
android:clickable="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Accept battle from"
android:id="@+id/challengeBtn"
android:enabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log out"
android:id="@+id/logOutBtn"
android:clickable="true"
android:enabled="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/battleMode"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:singleLine="true"
android:lines="1"/>
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spells"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hightScore"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/endAllBattles"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:focusable="true"
/>
</LinearLayout>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
Causing: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
Option 2 (it is working when I set visiblity ofLinearLayout
to gone
and I end FrameLayout
before beginning of LinearLayout
), problem is, I want to see content of the LinearLayout
:
<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"
android:orientation="vertical"
/>
<!-- Listview to display slider menu -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"
/>
<LinearLayout
android:visibility="gone"
android:background="@drawable/background_parchment"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/challengerWandIdEt"
android:enabled="true"
android:hint="WandId of challenger"
android:clickable="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Accept battle from"
android:id="@+id/challengeBtn"
android:enabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log out"
android:id="@+id/logOutBtn"
android:clickable="true"
android:enabled="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/battleMode"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:singleLine="true"
android:lines="1"/>
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spells"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hightScore"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/endAllBattles"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:focusable="true"
/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
Option 3:
Same as previous one but LinearLayout
visiblity
is not set to gone.
Then everything seems to work, but after clicking on element of the menu, OnItemClick
event is not triggered.
I have searched for this issue and everyone suggested to change focusable
and clickable
to false, but that didn't help. Or maybe I did something wrong. (I have added clickable
and focusable
to each element of main activity)
Any idea?
Upvotes: 0
Views: 724
Reputation: 948
You need to add the content of your view inside the main frame layout, beside your sliding menu like this:
<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">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Your content -->
</FrameLayout>
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
For your example you will have
<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">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:visibility="gone"
android:background="@drawable/background_parchment"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/challengerWandIdEt"
android:enabled="true"
android:hint="WandId of challenger"
android:clickable="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Accept battle from"
android:id="@+id/challengeBtn"
android:enabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log out"
android:id="@+id/logOutBtn"
android:clickable="true"
android:enabled="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/battleMode"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:singleLine="true"
android:lines="1"/>
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spells"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hightScore"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true" />
<model.TypeWriter
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/endAllBattles"
android:text=""
android:textColor="@color/main_menu_text_color_selector"
android:enabled="true"
android:clickable="true"
android:focusable="true"
/>
</LinearLayout>
</FrameLayout>
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Upvotes: 1