2016-12-05 84 views
1

我在Android Studio中創建一個NavigationDrawerActivity。但現在我不需要工具欄。所以我從APPA-bar_main.xml刪除工具欄:在活動添加ActionBarDrawerToggle,而無需使用工具欄

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" 
     android:layout_width="match_parent" 
     android:layout_height="56dp" /> 

</android.support.design.widget.AppBarLayout> 

<include layout="@layout/content_main" /> 

但我需要在屏幕上的一個TOP_LEFT切換按鈕顯示NavigationDrawer。 因爲我刪除工具欄,我不能使用下面的代碼:

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

現在,我怎麼可以一個切換按鈕添加到我的活動?

+0

刪除第三個參數'toolbar'和檢查呢?多一點使用'addDrawerListener'因爲'setDrawerListener'現在是'deprecated'。 – Ironman

+0

它顯示切換按鈕 – Paeez

+0

任何圖標你能解釋我越不明白您的評論 – Ironman

回答

1

可以使用幾乎任何可點擊的分量控制抽屜,例如一個按鈕。您可以創建一個按鈕下坡自定義組件,實現DrawerLayout.DrawerListener接口,例如:

package com.test.view; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.Button; 
import android.support.v4.widget.DrawerLayout; 
import com.test.MainActivity; 

public class CustomDrawerButton extends Button implements DrawerLayout.DrawerListener { 

    private DrawerLayout mDrawerLayout; 
    private int side = Gravity.LEFT; 

    public CustomDrawerButton(Context context) { 
     super(context); 
    } 
    public CustomDrawerButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 
    public CustomDrawerButton(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public void changeState(){ 
     if (mDrawerLayout.isDrawerOpen(side)){ 
      mDrawerLayout.closeDrawer(side); 
     }else{ 
      mDrawerLayout.openDrawer(side); 
     } 
    } 

    @Override 
    public void onDrawerSlide(View drawerView, float slideOffset) { 
     Log.e("BUTTOM DRAWER: ", "onDrawerSlide"); 
    } 
    @Override 
    public void onDrawerOpened(View drawerView) { 
     Log.e("BUTTOM DRAWER: ", "onDrawerOpened"); 
     setText("Close\ndrawer"); 
    } 
    @Override 
    public void onDrawerClosed(View drawerView) { 
     Log.e("BUTTOM DRAWER: ", "onDrawerClosed"); 
     setText("Open\ndrawer"); 
    } 
    @Override 
    public void onDrawerStateChanged(int newState) { 
     Log.e("BUTTOM DRAWER: ", "onDrawerStateChanged"); 
    } 

    public DrawerLayout getDrawerLayout() { 
     return mDrawerLayout; 
    } 
    public CustomDrawerButton setDrawerLayout(DrawerLayout mDrawerLayout) { 
     this.mDrawerLayout = mDrawerLayout; 
     return this; 
    } 
} 

您可以在您的片段佈局此組件:

<com.test.view.CustomDrawerButton 
    android:id="@+id/btnOpenDrawer" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:text="Open\ndrawer"/> 

而在包含您CustomDrawerButton片段或活性:

customDrawerButton = (CustomDrawerButton)view.findViewById(R.id.btnOpenDrawer); 
customDrawerButton.setDrawerLayout(mDrawer); 
customDrawerButton.getDrawerLayout().addDrawerListener(customDrawerButton); 
    customDrawerButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      customDrawerButton.changeState(); 
     } 
    }); 
0

嘗試設置高度和從佈局app_bar_操作欄= 0dp的寬度.. 所以不會對代碼的影響,但會刪除操作欄 這樣

 <android.support.v7.widget.Toolbar 
 
      android:id="@+id/toolbar" 
 
      android:layout_width="0dp" 
 
      android:layout_height="0dp" 
 
      android:background="?attr/colorPrimary" 
 
      app:popupTheme="@style/AppTheme.PopupOverlay" />