27

ナビゲーション ドロワーを使用してさまざまなフラグメントを開く 1 つのアクティビティを含むアプリを作成しました。アクションバーのドロワートグルがありますが、あまり目立ちません。メイン フラグメント (アプリの最初の起動時に表示されるフラグメント) の 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);          

    }

回答ありがとうございます。

4

5 に答える 5

75

スライドを開く必要がある場合:

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

于 2015-01-30T17:23:04.357 に答える