2013-10-18 5 views
8

Ich habe eine App mit einer Aktivität erstellt, die eine Navigationsleiste verwendet, um eine Reihe verschiedener Fragmente zu öffnen. Ich habe die Aktionsleiste drawertoggle, aber es ist nicht sehr sichtbar. Wenn ich eine Schaltfläche in der onCreateView in meinem Hauptfragment (das Fragment, das beim ersten Start meiner App erscheint) platziere, wie kann ich es öffnen, um die von meiner Aktivität kontrollierte Navigationsleiste zu öffnen?Wie öffne ich die Navigationsleiste bei einem Klick im Hauptfragment?


Dies scheint zu funktionieren. Die Antwort ist viel einfacher als ich dachte.

@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);   

    } 

Vielen Dank für Ihre Antworten.

+0

hast du die Antwort bekommen – DKV

Antwort

38

wenn Sie die Folie benötigen öffnen:

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

wenn Sie die Folie

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

Beispiel

mein mDrawerLayout wird schließen müssen hier instanziert:

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

mein Dia Zustand:

mSlideState=false; 

, wenn Sie den Schiebemenüzustand (geschlossen, geöffnet) wissen müssen. Verwenden Sie diesen Code:

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

schließlich.

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

in meinem Fall mein Dia-Menü auf der rechten Seite (Gravity.END), aber wenn man auf der linken Seite müssen, versuchen Sie mit Gravity.START

dieses: Sie können Ihre Click-Ereignis wie folgt verwenden Arbeit für mich, ich hoffe, dein Problem gelöst.

+1

können Sie 'mDrawerLayout.isDrawerOpen (drawerView)' anstelle von Flag – Rowan

+0

betrachten ich möchte dieses Layout über meiner Ansicht. IN DIESEM BEWEGT SICH DER LAYOUT SEITLICH. was soll ich machen? – DKV

+0

in Ihrem XML, die letzte (unterste) deklarierte Ansicht wird standardmäßig den höchsten Z-Index (oben) haben, die obige Antwort sollte akzeptiert werden, wenn das Problem gelöst wurde. – Talha