2013-10-22 55 views
0

我已經嘗試使用帶有ActionBarSherlock的Jeremy library如何通過單擊操作欄圖標來製作左側菜單?

在我的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> 

我的MainActivity

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上的圖標時,菜單沒有彈出任何人都可以教我如何通過點擊圖標彈出菜單,如何在菜單退出時再次點擊菜單來隱藏菜單?

回答

1

使用此庫創建Sliding菜單。 https://github.com/jfeinstein10/SlidingMenu

行動吧home鍵點擊:

集supportActionBar.setHomeButtonEnabled(真);`
覆蓋的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; 
} 
+0

是我沒有用lib創建滑動菜單中,滑動菜單時滑動到左側,但當我點擊「菜單」圖標上的動作欄它不會出現 –

+0

你可以在菜單上點擊代碼如果(menu.isMenuShowing()){ \t \t \t \t menu.showContent(); \t \t \t}否則{ \t \t \t \t menu.showMenu(); \t \t \t} –

+0

對不起,我是一種新的編碼,所以如果可能的話,如果你能給我一個更詳細的解釋謝謝:( –