jfeinstein10 / SlidingMenu

An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!
Apache License 2.0
11.08k stars 5.05k forks source link

Map with sliding menu on both sides with two separate list #677

Open Mansoor17 opened 9 years ago

Mansoor17 commented 9 years ago

Hello everyone I am new in android first of all thanks and congrats for such a great work on sliding menu i have an issue i want to show map as a my layout(mean map should be main layout not the fragment of sliding menu) while sliding menus on both sides with separate list. And one more issue sliding icon which is showing on left side not showing on right side. How the sliding icon came in center not on the top on both sides. please help me with step by step.

cristianego commented 9 years ago

Hi try put a button on map layout or wherever you want, then like balasaheb143 said

getSlidingMenu().showSecondaryMenu(true);

onclick evento for this button {

if (getSlidingMenu().isSecondaryMenuShowing()) getSlidingMenu().toggle(true); else getSlidingMenu().showSecondaryMenu(true); }

hope helpyou

Mansoor17 commented 9 years ago

Thanks for your reply, But my problem is the following, public class sliding extends BaseActivity {

public sliding() {
    super(R.string.left_and_right);
}

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

    setContentView(R.layout.sliding);
    getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    getSlidingMenu().setSecondaryMenu(R.layout.right_main);
    setBehindContentView(R.layout.left_main);
     Button csButton=(Button)findViewById(R.id.button1);
     csButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            getSlidingMenu().showMenu();

        }//inside csButton1 onclick listener just need to call 
    });
       // inside csButton onclick listener just need to call slidingMenu.showSecondaryMenu();
         Button csButton1=(Button)findViewById(R.id.button2);
       csButton1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            getSlidingMenu().showSecondaryMenu();

        }
    }) ;    
}

}

and my xml for sliding is following

<?xml version="1.0" encoding="utf-8"?>

Mansoor17 commented 9 years ago

device-2014-10-10-185504

Mansoor17 commented 9 years ago

device-2014-10-10-185548

cristianego commented 9 years ago

Ok, its works for me. 1) extends SlidingFragmentActivity instead BaseActivity 2) Second, setBehindContentView(R.layout.fragment_slidemenu_bus); //this is after setContenView menu_bus = new SlidingMenu(this);
menu_bus.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); menu_bus.setShadowWidthRes(R.dimen.shadow_width); menu_bus.setShadowDrawable(R.drawable.shadow); menu_bus.setBehindOffsetRes(R.dimen.slidingmenu_offset); menu_bus.setFadeDegree(0.35f); menu_bus.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

//firs slide menu, then second

  getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);//mode two menus
        getSlidingMenu().setBehindOffset(a*2/3);                  
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        

        getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two);
        getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);

//start fragment for second menu

getSupportFragmentManager() .beginTransaction() .add(R.id.menu_frame_two, new Test_Bus(),"test_bus") .commit();

sorry about my english. I think that might be the order

Mansoor17 commented 9 years ago

Dear thanks for your time and reply, But my problem is still there when the following code line is entered this menu appear on both sides. getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two); getSupportFragmentManager() .beginTransaction() .add(R.id.menu_frame_two, new Test_Bus(),"test_bus") .commit(); In short the menu fragment which is set secondary appears on both sides. i comment the transaction of setbehindcontentview() only secondary menu including following result appears on both sides device-2014-10-11-114732

Mansoor17 commented 9 years ago

here is my whole code

public class sliding extends SlidingFragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sliding);
    setBehindContentView(R.layout.content_frame);
    SlidingMenu menu_bus = new SlidingMenu(this);

    menu_bus.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
    menu_bus.setShadowWidthRes(R.dimen.shadow_width);
    menu_bus.setShadowDrawable(R.drawable.shadow);
    menu_bus.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    menu_bus.setFadeDegree(0.35f);
    menu_bus.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    //firs slide menu, then second
      getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
    //  getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new MenuFragment()).commit();//mode two menus
            int a = 1;
            getSlidingMenu().setBehindOffset(a*2/3);                  
            getSupportActionBar().setDisplayShowCustomEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);        

            getSlidingMenu().setSecondaryMenu(R.layout.right_main);
            getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);
    //start fragment for second menu
    getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.right_container, new RightFragment(),"test_bus")
    .commit();

     Button csButton=(Button)findViewById(R.id.button1);

     csButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            getSlidingMenu().showMenu();

        }//inside csButton1 onclick listener just need to call 
    });
       // inside csButton onclick listener just need to call slidingMenu.showSecondaryMenu();
         Button csButton1=(Button)findViewById(R.id.button2);
       csButton1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            getSlidingMenu().showSecondaryMenu();

        }
    }) ;

}

}

cristianego commented 9 years ago

your xml files? can you put codes R.layout.content_frame R.layout.right_main, because,I generate the first menu by xml, and second by programmatically

Mansoor17 commented 9 years ago

I solve it i was adding two sliding libraries in same project now its all fine thanks dear...

Mansoor17 commented 9 years ago

I solve it i was adding two sliding libraries in same project now its all fine thanks dear...

On Saturday, October 11, 2014 7:32 PM, cristianego notifications@github.com wrote:

your xml files? can you put codes R.layout.content_frame R.layout.right_main, because,I generate the first menu by xml, and second by programmatically — Reply to this email directly or view it on GitHub.

dasbiswajit commented 9 years ago

Hi @Mansoor17 , I am exactly I am looking for the same implementation. I am looking for both side sliding menu without actionbar sherlock. Is it possible for you to share the complete code or sample working project. As I am pretty new to using this library. Please look into my issue https://github.com/jfeinstein10/SlidingMenu/issues/684

Mansoor17 commented 9 years ago

@cristianego my code was working from weeks well but suddenly after uninstalling my app and again installing my app size reduce from 7.92 MB to 6.92 MB and following Logcat error is coming

   11-17 17:58:52.241: E/AndroidRuntime(4049): FATAL EXCEPTION: main

11-17 17:58:52.241: E/AndroidRuntime(4049): Process: com.example.sayminicabdriver, PID: 4049 11-17 17:58:52.241: E/AndroidRuntime(4049): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sayminicabdriver/mapslider.sliding}: java.lang.NullPointerException 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread.access$800(ActivityThread.java:135) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.os.Handler.dispatchMessage(Handler.java:102) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.os.Looper.loop(Looper.java:136) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread.main(ActivityThread.java:5001) 11-17 17:58:52.241: E/AndroidRuntime(4049): at java.lang.reflect.Method.invokeNative(Native Method) 11-17 17:58:52.241: E/AndroidRuntime(4049): at java.lang.reflect.Method.invoke(Method.java:515) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 11-17 17:58:52.241: E/AndroidRuntime(4049): at dalvik.system.NativeStart.main(Native Method) 11-17 17:58:52.241: E/AndroidRuntime(4049): Caused by: java.lang.NullPointerException 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.view.ViewGroup.addView(ViewGroup.java:3353) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.view.ViewGroup.addView(ViewGroup.java:3336) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.setContent(CustomViewAbove.java:436) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.setContent(SlidingMenu.java:356) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.attachToActivity(SlidingMenu.java:332) 11-17 17:58:52.241: E/AndroidRuntime(4049): at com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.attachToActivity(SlidingMenu.java:292) 11-17 17:58:52.241: E/AndroidRuntime(4049): at mapslider.sliding.onCreate(sliding.java:122) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.Activity.performCreate(Activity.java:5231) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 11-17 17:58:52.241: E/AndroidRuntime(4049): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 11-17 17:58:52.241: E/AndroidRuntime(4049): ... 11 more

Mansoor17 commented 9 years ago

@dasbiswajit @cristianego my code is following @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setBehindContentView(R.layout.content_frame); SlidingMenu menu_bus = new SlidingMenu(this); SlidingMenu sm = getSlidingMenu(); sm.setShadowWidthRes(R.dimen.shadow_width); sm.setShadowDrawable(R.drawable.shadow); sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); sm.setFadeDegree(0.35f); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

      //    menu_bus.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    //firs slide menu, then second
      getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
     getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new                     MenuFragment()).commit();//mode two menus

            getSlidingMenu().setBehindOffset(50);                  
         //   getSupportActionBar().setDisplayShowCustomEnabled(true);
          //  getSupportActionBar().setDisplayHomeAsUpEnabled(true);        

            getSlidingMenu().setSecondaryMenu(R.layout.right_main);
            getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);
    //start fragment for second menu
    getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.right_container, new RightFragment(),"test_bus")
    .commit();

     Button csButton=(Button)findViewById(R.id.button1);

 csButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            getSlidingMenu().showMenu();

        }//inside csButton1 onclick listener just need to call 

    });
       // inside csButton onclick listener just need to call slidingMenu.showSecondaryMenu();
         Button csButton1=(Button)findViewById(R.id.button2);
       csButton1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            getSlidingMenu().showSecondaryMenu();

        }
    }) ;