0

I'm trying to create a right to left navigation drawer in my app, I know in order to make it happen is should use android:layout_gravity="end", and it works, but i can't move the drawerToggle (Hamburger icon to right side, and when I click it gives me an error saying No drawer view found with gravity LEFT Here is my code:

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <include
        android:id="@+id/app_bar"
        layout="@layout/app_bar" />

</LinearLayout>

<fragment

    android:layout_marginTop="@dimen/margin_top_navigatrion"
    android:id="@+id/fragment_navigation_drawer"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:layout="@layout/fragment_navigation_drawer" />

public class NavigationDrawerFragment extends Fragment {

private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;

private View containerView;


public NavigationDrawerFragment() {

}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
    return layout;

}


public void setUp(int fragmentID, DrawerLayout layout, final Toolbar toolbar) {

    containerView = getActivity().findViewById(fragmentID);
    mDrawerLayout = layout;
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), layout, toolbar, R.string.drawer_open, R.string.drawer_close) {

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();

        }
    };



    mDrawerLayout.setDrawerListener(mDrawerToggle);



    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {

            mDrawerToggle.syncState();
        }
    });
}

And here is the main activity:

public class MainActivity extends ActionBarActivity {
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);


    NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
            getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);

    drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout)findViewById(R.id.drawer_layout), toolbar);

}

Can anyone help me with that??

  • 1
    I would suggest to use ToolBar instead of Action bar, as you can implement custom view for your toolbar. If your app is supporting 4.2+ only and you will need rtl support in that case add android:supportsRtl="true" to the element in your manifest file. – Adarsh Yadav Aug 14 '15 at 09:10
  • also have a look at this answer http://stackoverflow.com/a/17156831/1384010 – Adarsh Yadav Aug 14 '15 at 09:16
  • yeah I tried that post before asking this but didn't help me for my problem. – devdroid Aug 14 '15 at 10:50

0 Answers0