使用ActionBar Sherlock,滑动菜单始终显示全屏

时间:2013-07-09 11:43:06

标签: android slidingmenu android-sliding

我正在开发一个使用jfeinstein10/SlidingMenu Action Bar Sherlock的Android应用程序。

这是我第一次使用它而且我不知道如何在非全屏模式下打开它。我想看看活动和菜单。

这是我的 menu_list.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dip"
    android:paddingRight="5dip" />

我的 menu_row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/menuIcon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:padding="10dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/menuTitle"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:padding="10dp"
        android:text=""
        android:textAppearance="@android:style/TextAppearance.Medium" />
</LinearLayout>

我的 menu.xml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/slidingMenuFragment"
    android:name="com.com.msx.fragments.MenuFragment"
    android:layout_width="2dp"
    android:layout_height="match_parent">
</fragment>

我的 dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="slidingmenu_width">5dp</dimen>
    <dimen name="slidingmenu_offset">60dp</dimen>
    <dimen name="list_padding">10dp</dimen>
    <dimen name="shadow_width">15dp</dimen>
    <integer name="num_cols">1</integer>
</resources>

onCreate用于我的活动:

@覆盖

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setBehindContentView(R.layout.menu);

        setSlidingActionBarEnabled(false);        

        slidingMenu = new SlidingMenu(this);
        slidingMenu.setMode(SlidingMenu.LEFT);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
        slidingMenu.setShadowDrawable(R.drawable.shadow);
        slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        slidingMenu.setFadeDegree(0.35f);
        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

MenuFragment

public class MenuFragment extends ListFragment
{
    private static final String TAG = "MenuFragment";
    /**
     * Menu items to show in this Sliding Menu. 
     */
    private ArrayList<MenuItem> mMenuItems;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.menu_list, null);
    }

    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);

        // Get menu items.
         mMenuItems = getMenuItems();

        MenuAdapter adapter = new MenuAdapter(getActivity(),
                R.layout.menu_row, mMenuItems);
        setListAdapter(adapter);
    }

    /**
     * Get menu items to show on Sliding menu.
     * @return
     */
    private ArrayList<MenuItem> getMenuItems()
    {
     [ ... ]
    }
}

我想像Facebook的应用程序一样显示菜单。 我该怎么做?

4 个答案:

答案 0 :(得分:1)

查看我在此发布的代码SlindingMenu without ActionBar,它适用于我作为Facebook / Foursquare菜单。这些行没有实现/与您不同:

menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

试试吧。

答案 1 :(得分:0)

搜索我发现了以下内容:

  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>

答案 2 :(得分:-1)

我不知道你是否仍然需要这个答案,但我使用相同的滑动菜单遇到了同样的问题,我修改了这个参数的尺寸:

lateralMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);

如果设置为0dp,则会全屏打开滑动菜单。对于我的应用程序,如果我使用平板电脑或手持设备,我需要两个不同尺寸的滑动菜单。我使用不同的dimen.xml文件为此参数设置了不同的维度。

希望有所帮助。

答案 3 :(得分:-1)

请试试这个......

 getSlidingMenu().setBehindOffset(100);