First of all I know this question appeared here before but after trying a lot i still didn't succeed. I working on the example from Android Developers site.
I'm trying to set the menu to be opened from right to left instead of how its implementing in the example (from left to right). In addition I want to move the open menu button to the right side of the action bar. I also red some answers here, for example in this answer.
I try to change the gravity of the views and the layouts but I get the error:
no drawer view found with absolute gravity LEFT
Can you please help me to figure out what is the problem in my code and what should I change in order to set the menu to be opened from the right, and to move the action bar button to the right side?
the xml code is here:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_gravity="right"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ListView android:id="@+id/left_drawer"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="10dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Add this code to manifest:
and then write this code on Oncreate:
It works for me. ;)
SOLUTION
your_layout.xml:
YourActivity.java:
In your main layout set your
ListView
gravity to right:Also in your code :
hope it works :)
Take a look at this: slide ExpandableListView at DrawerLayout form right to left
I assume you have the ActionBarDrawerToggle implemented, the trick is to override the
onOptionsItemSelected(MenuItem item)
method inside the ActionBarDrawerToggle object with this:make sure and call this from
onOptionsItemSelected(MenuItem item)
in the Activity:This will allow you to use the the home button functionality. To move the button to the right side of the action bar you will have to implement a custom action item, and maybe some other stuff to get it to work like you want.
This answer is useful to set the navigation be open from right to left, but it has no solution to set its icon to be right side. This code can fix it. If you give it the
drawer
as its first param andViewCompat.LAYOUT_DIRECTION_RTL
as its second param, the entier layout will be set to RTL. It is a quick and simple solution, but I don't think it can be a correct solution for who that want to only set the menu to be opened from right to left and set its icon to be on right side. (Although, it's depended to your purpose.) However, I suggest giving thetoolbar
instead of thedrawer
. In this way just the toolbar has become RTL. So I think the combination of these 2 answers can exactly do what you want.According to these descriptions, your code should be like this:
(Add these lines to onCreate method)
Notice that you should make drawer final, otherwise you will get this error:
And don't forget to use
end
instead ofstart
inonNavigationItemSelected
method:and in your activity_main.xml
the main issue with the following error:
no drawer view found with absolute gravity LEFT
is that, you defined the
for list-view in right, but try to open the drawer from left, by calling this function:
and clicking on hamburger icon!
just comment the above function and try to handle open/close of menu like @Rudi said!