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

Unable to set sliding menu width(occupies whole screen) #686

Open vishwasdoth opened 9 years ago

vishwasdoth commented 9 years ago

This is how I am setting it up;

    SlidingMenu slidingMenu = new SlidingMenu(this);
    slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    slidingMenu.setShadowDrawable(R.drawable.sliding_menu_left_shadow);
    slidingMenu.setSecondaryShadowDrawable(R.drawable.sliding_menu_right_shadow);
    slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
    slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset_left);

    slidingMenu.setFadeDegree(0.05f);
    setSlidingActionBarEnabled(true);

        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT, true);
    slidingMenu.setMenu(R.layout.left_sliding_menu);
    slidingMenu.setSecondaryMenu(R.layout.slidemenu_notification);

here are dimensions.

``` 15dp 300dp ```
vishwasdoth commented 9 years ago

Still stuck with this...please help

Fiddl3 commented 9 years ago

try slidingMenu.setBehindWidthRes(R.dimen.slidingmenu_offset_left); not slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset_left);

behindWidth - a dimension representing the width of the behind view. Default is the width of the screen (equivalent to behindOffset = 0).

or reduce slidingmenu_offset_left, because it isn't menu width behindOffset - a dimension representing the number of pixels that you want the above view to show when the behind view is showing. Default is 0.

behind view is a actual menu above view is primary content

silmple: behindOffset is a left/right margin of menu behindWidth is a width of menu

vishwasdoth commented 9 years ago

No luck....I have updated library 2 days back. earlier I was doing following and it was working fine.

    slidingMenu.setMode(SlidingMode.LEFT_RIGHT);
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    slidingMenu.setShadowDrawable(R.drawable.sliding_menu_left_shadow, SlidingMode.LEFT);
    slidingMenu.setShadowDrawable(R.drawable.sliding_menu_right_shadow, SlidingMode.RIGHT);

    slidingMenu.setFadeDegree(0.05f);

    slidingMenu.setShadowWidthRes(R.dimen.slidingmenuWidth);

    slidingMenu.setBehindWidthRes(R.dimen.slidingmenuWidth_left, SlidingMode.LEFT);
    slidingMenu.setBehindWidthRes(R.dimen.slidingmenuWidth_right, SlidingMode.RIGHT);

    slidingMenu.setEnabled(false);
Fiddl3 commented 9 years ago

If you're using SlidingActivity don't create new instance of SlidingMenu, one is already there... In onCreate() you should add menu layout by calling setBehindContentView() and get instance of sliding menu by calling getSlidingMenu () then set everything on this instance. Ex:

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

        setContentView(R.layout.primary_layout);
        setBehindContentView(R.layout.left_sliding_menu);
        setSlidingActionBarEnabled(true);

        SlidingMenu slidingMenu = getSlidingMenu();
        slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
        slidingMenu.setShadowDrawable(R.drawable.sliding_menu_left_shadow);
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //ex: 8dp
        slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset_left); //ex: 50dp
        slidingMenu.setFadeDegree(0.05f);

        slidingMenu.setSecondaryMenu(R.layout.slidemenu_notification);
        slidingMenu.setSecondaryShadowDrawable(R.drawable.sliding_menu_right_shadow);
    }
vishwasdoth commented 9 years ago

@Fiddl3 thanks for your response. I am using absherlock with overlay for that I need to use slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT, true);

everything works perfect if I remove above mention line.

Fiddl3 commented 9 years ago

When you use library with ABS you should edit Sliding_Activity and make them extend Sherlock_Activity in a place of *Activity Example: https://github.com/jfeinstein10/SlidingMenu/blob/master/library/src/com/jeremyfeinstein/slidingmenu/lib/app/SlidingActivity.java#L11

change:

...
public class SlidingActivity extends Activity implements SlidingActivityBase {
...

to:

...
public class SlidingActivity extends SherlockActivity implements SlidingActivityBase {
...

And add import of SherlockActivity

Simillar in: SlidingFragmentActivity : FragmentActivity --> SherlockFragmentActivity SlidingListActivity : ListActivity --> SherlockListActivity SlidingPreferenceActivity : PreferenceActivity --> SherlockPreferenceActivity

then Your Activity should be extended by Sliding*Activity not Sherlock*Activity Example:

public class MyActivity extends SlidingActivity {

    ...

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

        setContentView(R.layout.primary_layout);
        setBehindContentView(R.layout.left_sliding_menu);
        setSlidingActionBarEnabled(true);

        SlidingMenu slidingMenu = getSlidingMenu();
        slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
        slidingMenu.setShadowDrawable(R.drawable.sliding_menu_left_shadow);
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //ex: 8dp
        slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset_left); //ex: 50dp
        slidingMenu.setFadeDegree(0.05f);

        slidingMenu.setSecondaryMenu(R.layout.slidemenu_notification);
        slidingMenu.setSecondaryShadowDrawable(R.drawable.sliding_menu_right_shadow);
        //your code here

    }

    ...
}
Fiddl3 commented 9 years ago

Or don't extend MyActivity with SlidingActivity Example:

public class MyActivity extends SherlockActivity {

    ...

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

        setContentView(R.layout.primary_layout);

        SlidingMenu slidingMenu = new SlidingMenu(this);
        slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
        slidingMenu.setShadowDrawable(R.drawable.sliding_menu_left_shadow);
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //ex: 8dp
        slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset_left); //ex: 50dp
        slidingMenu.setFadeDegree(0.05f);

        slidingMenu.setMenu(R.layout.menu);
        slidingMenu.setSecondaryMenu(R.layout.slidemenu_notification);
        slidingMenu.setSecondaryShadowDrawable(R.drawable.sliding_menu_right_shadow);

        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); //With ActionBar

    }

    ...
}