如何使用 Appcompat v7 21、工具栏和 DrawerLayout 将汉堡动画制作为箭头

2024-02-27

我将 android.support.v7.widget.Toolbar 与 android.support.v4.widget.DrawerLayout 一起使用。它工作正常,当导航抽屉关闭时显示汉堡图标,当抽屉打开时显示箭头图标。 我想在应用程序中的某些事件中禁用抽屉并将汉堡图标动画化为箭头。我尝试将锁定模式设置为关闭,但 v7.app.ActionBarDrawerToggle 仍然显示汉堡并打开抽屉。

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

有任何想法吗? 谢谢!

Update:

不,我可以更改图标的状态,并且可以启用/禁用抽屉,但动画不适用于此方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    Toolbar toolbar = (Toolbar) findViewById(R.id.application_toolbar);
    setSupportActionBar(toolbar);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.string1, R.string.string2) {
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };

    //mDrawerLayout.setDrawerListener(mDrawerToggle); // not needed
    ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            if (mDrawerLayout.getDrawerLockMode(GravityCompat.START) == LOCK_MODE_UNLOCKED) {
                showDrawer();
            } else {
                handleBackButtonPress(); // On this stage the home button is a <-
            }
    }
    ...
}

private void setDrawerState(boolean isEnabled) {
    if (isEnabled) {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        mDrawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_UNLOCKED);
        mDrawerToggle.syncState();

    } else {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        mDrawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        mDrawerToggle.syncState();
    }
}

抽屉位于工具栏的顶部。


看看这里,它描述了你如何解决它。

https://stackoverflow.com/a/26447144 https://stackoverflow.com/a/26447144

重要部分如下:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/white</item>
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Appcompat v7 21、工具栏和 DrawerLayout 将汉堡动画制作为箭头 的相关文章

  • Android - 如何一次只允许播放一个 MediaPlayer 实例?

    我正在尝试创建一个简单的 Sound board Android 应用程序 使用 ListView 项目作为按钮 顺便说一句 我是一个新手程序员 我的想法是 我按下一个按钮 就会播放一个特定的声音文件 如果我在播放声音时按下任何按钮 它应该
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想

随机推荐

  • 如何判断CSS是否已经加载?

    我如何断言页面的 CSS 已在 Watin 2 1 中成功加载并应用其样式 在做了一些研究并写下我的答案之后 我偶然发现这个链接 http www phpied com when is a stylesheet really loaded
  • iOS 5 中的离屏 UITextView 不可见/清晰文本

    我有一个从笔尖加载的离屏 UITextView 实例 当用户点击 评论 按钮时 该实例会移动到屏幕框架中 输入使用的任何文本都是不可见的 如果用户旋转设备 则会显示文本 我尝试过抛出 setNeedsDisplay 和 setNeedsLa
  • ffmpeg的UDP协议是什么?

    ffmpeg的UDP协议是什么 这是另一个例子question https stackoverflow com questions 12003014 pipe udp input to ffmpeg ffmpeg i udp localho
  • 我们可以检查一个指针以确保它是一个有效的地址吗?

    我的想法是打印它指向的对象 我认为一个有效的指针应该有一个有效的对象 如果我们尝试打印出对象 我们会验证指针是否有效 我对吗 我认为一个有效的指针应该有一个有效的对象 是的 这就是有效指针的定义 如果我们尝试打印出对象 我们会验证指针是否有
  • setInterval 不适用于 ajax 调用

    我对网络服务进行了 getJson 调用并且工作正常 现在我尝试每 10 秒发出一次请求 使用带有回调函数的 setInterval 来触发弹出警报 我无法让它发挥作用 这是代码 function ajxCall getJSON http
  • 如何停止和播放jquery脚本

    我在用着slidesjs http www slidesjs com 在单页网站上创建 5 个不同的幻灯片 画廊 它们都有 slides 类并有自己的 ID 在调用播放函数之前 我不希望播放任何幻灯片 我已经能够使用以下方法成功阻止每个幻灯
  • 何时方便使用 Executors.newSingleThreadExecutor() 的示例

    请有人告诉我一个现实生活中的例子 在哪里使用这个工厂方法比其他方法更方便 新的单线程执行器 公共静态 ExecutorService newSingleThreadExecutor 创建一个执行器 它使用单个工作线程来操作 无界队列 但请注
  • Json.net 上的反序列化更改属性类型和名称

    使用 json net 当我反序列化 json 字符串时 我需要将 json 列表映射到另一个字段并转换类型 为了清楚起见 我有这个类 它是生成的代码 我无法更改它 Serializable public partial class Nbg
  • 无法解析:com.google.firebase:firebase-bom:31.0.0

    我正在使用 Android Studio Dolphin 2021 3 1 Patch 2 Gradle 7 5 1 Android Gradle 插件版本 7 3 1 Build Tools 33 0 0 SDK 32 当前稳定的 Gra
  • 如何在Django中获取所有GET请求值?

    如何在 Django 中获取所有这些 url 参数 1 12 18 5 生日快乐 https domain method 1 12 18 5 Happy birthday 我努力了 parameter request GET get 1 但
  • 当用户单击按钮时如何打开新窗口?

    当用户单击按钮 仍需要创建 时 我将如何创建一个新窗口 我删除了一些代码以使其更短 我需要创建一个按钮 当他们点击该按钮时 会打开一个新窗口 我尚未创建该按钮 因为该按钮必须链接到新窗口 请帮忙 My imports class App d
  • JavaScript 中检查变量是数字还是字符串

    有谁知道如何在 JavaScript 中检查变量是数字还是字符串 如果您正在处理文字符号 而不是构造函数 则可以使用typeof https developer mozilla org en Core JavaScript 1 5 Refe
  • 创建与 azure 资源管理器的服务连接时出错:azure pipelines

    使用托管标识的 Azure 资源管理器 当尝试添加服务连接时 因此我可以使用另一个 azure 云应用程序服务通过管道进行部署 我在尝试时收到此错误 Service connection field creationMode is not
  • 函数返回类型的类型限定符

    给出以下 C 源代码 const int foo void return 42 gcc编译没有错误 但有 Wextra or Wignored qualifiers 出现以下警告 warning type qualifiers ignore
  • 如何在 EL JSF 中使用方括号

    我见过有人在 JSF 中使用方括号 我不确定我是否正确理解它的用法 所以也许 JSF 大师可以帮助我理解它 1 假设我有这个 bean x x是一个二维数组 x 如何显示x 0 使用EL 我想在这种情况下我需要使用方括号 我想我用 bean
  • 当变量更改时收到通知

    有什么方法可以获取变量何时更改吗 如果是这样 我怎样才能实现这一目标 官方 的方法是INotifyPropertyChanged 例如 当控件绑定到的数据对象更新时 UI Windows 窗体 WPF 使用它来自动刷新控件 public c
  • jquery ui selectmenu滚动条不起作用

    我使用 jquery selectmenu 插件 我已经初始化选择 select selectmenu width 100 maxHeight 300 style dropdown 我有很多选项 这会导致出现默认浏览器滚动条 但我无法使用它
  • 将数据迁移到应用程序组会禁用 iCloud 同步

    我正在向现有应用程序添加 今日扩展 我添加了一个应用程序组并使用了这个post https stackoverflow com questions 52191523 ios 11 how to migrate existing core d
  • 在geom_sf中填充连续颜色

    我正在运行代码来在 R 中创建地图 library tidyverse library ggplot2 library eurostat library janitor library sf eugd lt eurostat geodata
  • 如何使用 Appcompat v7 21、工具栏和 DrawerLayout 将汉堡动画制作为箭头

    我将 android support v7 widget Toolbar 与 android support v4 widget DrawerLayout 一起使用 它工作正常 当导航抽屉关闭时显示汉堡图标 当抽屉打开时显示箭头图标 我想在