2013-10-18 20 views
8

ナビゲーション・ドロワーを使用して多数の異なる断片を開く1つのアクティビティーを持つアプリを作成しました。私はアクションバーのdrawertoggleを持っていますが、あまり目に見えません。 メイン・フラグメント(アプリケーションが最初に起動したときに表示されるフラグメント)のonCreateViewにボタンを配置すると、自分のアクティビティによって制御されるナビゲーション・ドロワーを開くにはどうすればよいですか?メイン・フラグメントのボタンをクリックしてナビゲーション・ドロワーを開く方法は?


これは動作するようです。答えは私が思ったよりもはるかに簡単です。

ありがとうございました。ここで説明するように

+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 
}}); 

最後にこのコードを使用します。私のスライドメニューが右(Gravity.END)であるが、あなたは左側に必要がある場合は、Gravity.START

でこれを試してみてください私の場合

public void clickEventSlide(){ 
if(mSlideState){     
    mDrawerLayout.closeDrawer(Gravity.END); 
}else{    
    mDrawerLayout.openDrawer(Gravity.END); 
}} 

を:あなたはこのようなあなたのクリックイベントを使用することができます私のために働く、私はあなたの問題を解決したい。

+1

フラグ – Rowan

+0

の代わりに 'mDrawerLayout.isDrawerOpen(drawerView)'と考えるかもしれません。このレイアウトでは、側面に移動しています。私は何をすべきか? – DKV

+0

あなたのXMLでは、最後に(一番下に)宣言されたビューは、デフォルトで最高のZ-インデックス(上)を持ちます。 – Talha

関連する問題