2013-09-06 2 views
1

Я использую slidingMenu jfeinstein10 с ActionBarSherlock. Когда я сдвигаюсь вправо, скользящее меню отлично показывает (отображается только при определенной ширине). Но когда я нажимаю кнопку (SLIDEMENU), чтобы показать скользящее меню (с помощью toggle()), оно отображает все меню (охватывает весь экран). Как показать скользящее меню без покрытия всего экрана? Вот моя деятельность и меню XML ..jfeinstein10's SlidingMenu с ActionBarSherlock показывает скользящее меню без покрытия всего экрана?

MainActivity:

public class MainActivity extends SlidingFragmentActivity{ 

private static final int SLIDEMENU = 1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setBehindContentView(R.layout.sliding_menu); 
    getSupportActionBar().setIcon(android.R.color.transparent); 

    SlidingMenu menu = new SlidingMenu(this); 
    menu.setMode(SlidingMenu.LEFT);   
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
    menu.setMenu(R.layout.sliding_menu);   
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    menu.setBehindWidth((displaymetrics.widthPixels)/2); 

} 


@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    menu.add(0,SLIDEMENU,0,"Menu") 
    .setIcon(R.drawable.btnmenu) 
    .setShowAsAction(com.actionbarsherlock.view.MenuItem.SHOW_AS_ACTION_ALWAYS); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == SLIDEMENU) { 
     toggle(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

sliding_menu.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="@dimen/menuWidth" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:background="@android:color/transparent" > 

<TextView android:id="@+id/test1" 
    android:layout_width="@dimen/menuWidth" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/font_size" 
    android:text="@string/test1" /> 

<TextView 
    android:id="@+id/test2" 
    android:layout_width="@dimen/menuWidth" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/test1" 
    android:layout_marginTop="15dp" 
    android:textSize="@dimen/font_size" 
    android:text="@string/test2" /> 

<TextView 
    android:id="@+id/test3" 
    android:layout_width="@dimen/menuWidth" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/test2" 
    android:layout_marginTop="15dp" 
    android:textSize="@dimen/font_size" 
    android:text="@string/test3" /> 

ответ

0

Вы можете установить behindWidth

menu.setBehindWidth(your-value-here); 
+0

menu.setBehindWidth был установлен уже спариваются – RonPelayo

+0

Может быть, вы хотели бы установить статическое значение, а не '(displaymetrics.widthPixels)/2' –

+0

(displaymetrics.widthPixels)/2 эта часть работает над моим кодом. Проблема в том, что когда я нажимаю кнопку на панели действий, которая запускает toggle(), она отображает меню, охватывающее весь экран. – RonPelayo

0

Searching Я нашел следующее:

SlidingMenu sm = getSlidingMenu(); 
    sm.setShadowWidthRes(R.dimen.slidingmenuWidth); 
    sm.setBehindOffsetRes(R.dimen.slidingmenuOffset); 
    sm.setFadeDegree(0.35f); 
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 

    <dimen name="slidingmenuWidth">15dp</dimen> 
    <dimen name="slidingmenuOffset">60dp</dimen> 
Смежные вопросы