0

我曾尝试将Jeremy 库与 ActionBarSherlock 一起使用。

在我的 xml 示例中,我创建了ImageButton一个“设置”图像,并将其放在ActionBar. 所以我想要的是当用户将应用程序向右滑动时,会出现一个设置菜单,或者当用户点击“设置”图像时,菜单就会出现。我可以通过向右滑动来显示菜单,但是当我单击“设置”图像时我不能这样做。我怎么做?。

我有一个操作栏自定义 xml

     <?xml version="1.0" encoding="utf-8"?>
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="match_parent"
      android:layout_gravity="fill_horizontal" >
      <ImageView
      android:id="@+id/BackImg"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:layout_alignParentTop="true"
      android:src="@drawable/abc" />
     <ImageButton
      android:id="@+id/BtnSetting"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true"
      android:src="@drawable/setting" 
      android:background="@android:color/transparent"/>
     <ImageButton
      android:id="@+id/BtnMenu"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:layout_alignParentTop="true"
      android:src="@drawable/menu" 
      android:background="@android:color/transparent"/>
     </RelativeLayout>

我的主要活动

public class MainActivity extends SlidingFragmentActivity {
private void showActionBar() {
    LayoutInflater inflator = (LayoutInflater) this
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.ab_custom, null);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled (false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setCustomView(v);
  }

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     
    showActionBar();
    setContentView(R.layout.activity_main);
    setBehindContentView(R.layout.menu_leftcontainer);
    SlidingMenu menu = getSlidingMenu();
    menu.setMode(SlidingMenu.LEFT_RIGHT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setFadeDegree(0.35f);
    menu.setBehindOffset(200);
    menu.setShadowDrawable(R.drawable.shadow);
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.add(R.id.fragment_menu_container, new LeftMenuFragment());
    ft.commit();
    menu.setSecondaryMenu(R.layout.menu_rightcontainer);
    menu.setSecondaryShadowDrawable(R.drawable.shadow);
    FragmentTransaction ft1 = getSupportFragmentManager().beginTransaction();
    ft1.add(R.id.fragment_menu_container1, new RightMenuFragment());
    ft1.commit();
 }
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()) {
    case R.id.BtnMenu:

          if(menu.isMenuShowing()) 
          { menu.showContent(); } 
          else 
          {
              menu.showMenu();
              }
        return true;
    case R.id.BtnSetting:
          if(menu.isMenuShowing()) 
          { menu.showContent(); } 
          else 
          {
              menu.showMenu();
              }
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

我的 LeftMenuFragment

public class LeftMenuFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.leftmenu, container, false);
    }
}

因此,当我运行我的应用程序时,我可以左右滑动它以弹出菜单,但是当我单击ActionBar菜单上的图标时没有弹出,谁能教我如何通过单击弹出菜单图标以及如何在菜单退出时再次单击它来隐藏菜单?

4

1 回答 1

1

使用这个库来创建滑动菜单。https://github.com/jfeinstein10/SlidingMenu

对于操作栏主页按钮单击:

set supportActionBar.setHomeButtonEnabled(true);`
覆盖onMenuItemSelected方法

public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:

      (menu.isMenuShowing()) { menu.showContent(); } else { menu.showMenu(); }
    }

    return true;
}
于 2013-10-22T06:40:48.280 回答