【问题标题】:add ActionBarDrawerToggle in activity without using toolbar在不使用工具栏的情况下在活动中添加 ActionBarDrawerToggle
【发布时间】:2016-12-05 05:20:24
【问题描述】:

我在 android studio 中创建了 NavigationDrawerActivity。但现在我不需要工具栏了。所以我从 appa-bar_main.xml 中删除了工具栏:

<?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" />

但我需要屏幕左上角的切换按钮来显示 NavigationDrawer。 因为我删除了工具栏,我不能使用下面的代码:

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

现在,如何向我的活动添加切换按钮?

【问题讨论】:

  • 删除第三个参数toolbar 并检查它?更多的东西使用addDrawerListener,因为setDrawerListener现在是deprecated
  • 它显示任何切换按钮的图标
  • 你能解释更多吗?我看不懂你的评论
  • 我删除了第三个参数工具栏,现在没有按钮可以点击它来显示 NavigationDrawer
  • 访问这里并确保您添加了正确的import in codestackoverflow.com/questions/26439619/…

标签: android navigation-drawer toolbar


【解决方案1】:

您几乎可以使用任何可点击的组件来控制抽屉,例如按钮。您可以创建一个继承自 Button 并实现 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();
        }
    });

【讨论】:

    【解决方案2】:

    尝试设置action bar的高度和宽度=0dp from layout app_bar_.. 所以它不会影响代码,但会删除操作栏 像这样

            <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" />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多