2013-10-18 67 views
8

我已經做了一個應用程序,使用一個導航抽屜打開一些不同的片段。我有操作欄drawertoggle,但它不是很明顯。 如果我在我的主要片段(當我的應用第一次啓動時出現的片段)中的onCreateView中放置一個按鈕,我怎樣才能打開由我的活動控制的導航抽屜?如何打開導航抽屜上的按鈕點擊主要片段?


這似乎工作。答案比我想象的要簡單得多。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View fragView = inflater.inflate(R.layout.mainmenu, container, false); 
    button1 = (Button) fragView.findViewById(R.id.button1);   
    mDrawerLayout = (DrawerLayout)getActivity().findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView)getActivity().findViewById(R.id.left_drawer); 
    button1.setOnClickListener(this); 
    return fragView; 
} 


@Override 
public void onClick(View v) {  

     mDrawerLayout.openDrawer(mDrawerList);   

    } 

謝謝你的回答。

+0

你是否得到了答案 – DKV

回答

38

如果你需要打開滑蓋:

mDrawerLayout.openDrawer(Gravity.LEFT); //Edit Gravity.START need API 14 

,如果您需要合上滑蓋

mDrawerLayout.closeDrawer(Gravity.LEFT); //Edit Gravity.START need API 14 

我mDrawerLayout這裏實例化:

mDrawerLayout = (DrawerLayout)findViewById(R.id.my_drawer_layout); 

我的滑動狀態:

mSlideState=false; 

,如果你需要知道的幻燈片菜單狀態(關閉,打開)。使用此代碼:

mDrawerLayout.setDrawerListener(new ActionBarDrawerToggle(this, 
    mDrawerLayout, 
    R.drawable.ic_menu_slide, 
    0, 
    0){ 
@Override 
public void onDrawerClosed(View drawerView) {      
    super.onDrawerClosed(drawerView); 
    mSlideState=false;//is Closed 
} 
@Override 
public void onDrawerOpened(View drawerView) {      
    super.onDrawerOpened(drawerView); 
    mSlideState=true;//is Opened 
}}); 

終於。您可以使用您的點擊事件是這樣的:

public void clickEventSlide(){ 
if(mSlideState){     
    mDrawerLayout.closeDrawer(Gravity.END); 
}else{    
    mDrawerLayout.openDrawer(Gravity.END); 
}} 
在我的情況

我的幻燈片菜單是在正確的(Gravity.END),但是如果你需要在左邊,試圖用Gravity.START

這爲我工作,我希望解決你的問題。

+1

你可能會考慮'mDrawerLayout.isDrawerOpen(drawerView)'而不是標誌 – Rowan

+0

我希望這個佈局高於我的視圖。在這個佈局移動到一邊。我該怎麼辦? – DKV

+0

默認情況下,最後(最底部)聲明的視圖將具有最高的Z-index(頂部),如果解決問題,則應接受上面的答案。 – Talha