DrawerLayout 和ActionBar的联动中遇到问题,ActionBar 不能控制DrawerLayout

Android标题栏控制全解析:从ActionBar到Toolbar的沉浸式实践 在Android应用开发中,视图系统是构建用户界面的核心基础,它通过Window、DecorView等层级结构管理屏幕内容的绘制与交互。理解视图层级与Window机制,是掌握界面动态控制的关键原理,这直接关系到应用的用户体验与视觉一致性。其技术价值在于,开发者可以基于此实现灵活的界面适配与交互响应,从而提升应用的可用性与品牌辨识度。在沉浸式阅读、视频播放、游戏或多级导航等应用场景中,对顶部标题栏(ActionBar/Toolbar)的精细控制——包括动态隐藏、显示及标题修改——成为实现特定界面效果的基础需求 阅读详情


DrawerLayout 和ActionBar的联动http://blog.youkuaiyun.com/Rodulf/article/details/50901481

在按照上面做的时候,DrawerLayout 和ActionBar的联动中遇到问题,ActionBar 不能控制DrawerLayout

后来发现,我重写的方法错了,

//TODO 注意了这里ActionBar和 DrawerLayout联动,
需要重写的方法是 onOptionsItemSelected而不是onContextItemSelected


做一个记录:

package tech.androidstudio.navigationviewdrawerlayoutdemo;

import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerlayout);

        mToggle = new ActionBarDrawerToggle(this,mDrawerLayout,0,0);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mToggle.syncState();
        mDrawerLayout.setDrawerListener(mToggle);
        //看 源码 ActionBarDrawerToggle有 实现 Drawerlistener所以 可以添加
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(mToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    //TODO 注意了这里ActionBar和 DrawerLayout联动,需要重写的方法是 onOptionsItemSelected而不是onContextItemSelected

    /**
    @Override
    public boolean onContextItemSelected(MenuItem item) {
//        return super.onContextItemSelected(item);
        Toast.makeText(this,"Toggle Clicked",Toast.LENGTH_LONG).show();
        if(mToggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onContextItemSelected(item);
    }
    */
}

Android自定义ActionBar实战:Toolbar与AppCompatActivity深度集成指南 ActionBar是Android系统对顶部操作区域的行为契约,而非过时的UI组件;其核心在于统一管理返回导航、菜单展开、状态栏集成与Fragment联动等生命周期行为。基于AppCompatActivity的getSupportActionBar()机制,Toolbar作为物理载体可无缝接入系统级能力,如onCreateOptionsMenu回调、无障碍支持及Material主题适配。这种‘契约抽象+物理实现’模式,显著提升多页面顶部栏的一致性、可维护性与可测试性,广泛应用于政务、金融、医疗等需长期迭代的 阅读详情

相关推荐

工业金属表面缺陷检测:4种光学成像方案(明/暗/漫/背光)选型与实测对比

本文深入探讨工业金属表面缺陷检测中的4种光学成像方案(明/暗/漫/背光),详细解析其物理原理、适用场景及实测效果。通过对比不同照明方案在铝合金轮毂、不锈钢餐具等实际工业场景中的表现,提供科学的选型决策树,帮助提升缺陷检出率至99%以上,为计算机视觉在工业质检领域的应用提供实用指南。

weixin_33624741的博客 388

ActionBarDrawerToggle 被废弃 -- Deprecated

ActionBarDrawerToggle 被废弃 – DeprecatedActionBarDrawerToggle 是干嘛用的 咱们都知道Android侧边栏的故事吧。知道的直接翻页,不知道咱们来谈谈侧边栏的故事。 侧边栏这种交互方式最早在facebook、印象笔记等牛逼APP上出现,现在QQ也在用。优点就是可以放很多菜单,并且不占主屏幕显示的空间。缺点就是新手不容易发现。当初我给我妈教了很长

zezeviyao的专栏 3873

hpm6750evk2开发板(四)TCP回送(1000M网口)

再接下来我们修改代码,先找到配置网速的地方,肯定是在enet的初始化函数里面,我们一个函数一个函数找,也可以用单步调试一步一步找,结果发现是在enet_init函数里面调用的rtl8211_basic_mode_default_config函数配置网速的,我们把enet_phy_port_speed_100mbps改为enet_phy_port_speed_1000mbps,重新编译运行试试。首先我们复制一份lwip_tcpecho代码,重命名为lwip_tcpecho_RGMII,如下图所示。

Silas1750的博客 920

修改Toolbar/Actionbar的图标

新建项目时要使用侧滑栏,toolbar等这些元素,但是使用AS新建的项目中toolbar的图标是黑色的,想让显示白色。如下图: 1.重新设置toolbar的图标,添加代码,无效! toolbar.setNavigationIcon(R.drawable.ic_menu_white_18dp); setSupportActionBar(toolbar); 2.重新查

1006346386@qq.com 775

自动化测试软件设计:C# + VISA 库实现多接口(GPIB/USB)测试仪器控制

本文介绍了如何利用C#和VISA库开发支持多接口的自动化测试软件。VISA库作为标准化API,能够统一控制GPIB、USB等不同接口的测试设备。文章详细阐述了软件设计目标,包括多接口支持、统一控制、自动化脚本执行等功能。重点讲解了C#中VISA库的安装配置,并提供了设备控制类的核心代码实现,涵盖设备连接、命令发送、响应读取等关键操作。通过具体示例展示了GPIB和USB设备的连接方式,并扩展了自动化测试脚本功能。该方案具有高扩展性和维护性,适用于电子设备测试、生产线检测等多种场景,为自动化测试系统开发提供了实

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1709

【AIGC】COT思维链:让AI学会拆解问题,像人一样思考

COT思维链的出现,为AI的发展开辟了一条新的道路。它让AI学会了像人类一样思考,将复杂问题分解成简单的步骤,并逐步推理出最终答案。希望我的引导会对你产生启发。

智兔唯新的博客 9002

Android循环切换图标,如何更改Android应用上的抽屉切换图标?

我在我的android应用程序中创建了一个抽屉开关。它显示在屏幕的左上角。当我点击切换时,列表视图项目将显示在左侧。 屏幕下方是主屏幕:如何更改Android应用上的抽屉切换图标? 当我点击切换按钮,将显示如下: 现在我想改变的切换按钮的图标通过以下代码:mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_drawer);mDrawerToggle.s...

weixin_39623671的博客 305

Aruba无线控制器实战:如何用Client Match优化企业办公区漫游(附SNR调优技巧)

本文深入解析了如何利用Aruba无线控制器的Client Match功能优化企业办公区无线漫游体验。通过实战配置,详细阐述了基于SNR(信噪比)的精细化调优策略,包括阈值设定、负载均衡与场景化参数调整,旨在解决终端粘滞、乒乓漫游等问题,实现智能、平滑的无缝漫游。

weixin_28318011的博客 225

Toolbar与DrawerLayout的结合使用

结合Toolbar与DrawerLayout实现抽屉式效果[1] 程序本身自带Actionbar,需设置主题为NoActionbar: <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> </style>...

sinat_38799085的博客 390

告别迷茫!新手如何从RTKLIB命令行程序入手,快速理解GNSS解算全流程

本文为GNSS新手提供RTKLIB命令行程序实战指南,重点介绍如何通过`rnx2rtkp`后处理解算工具快速掌握GNSS解算全流程。从环境搭建、程序编译到核心算法解析,帮助读者理解RTKLIB源码结构,并通过真实数据处理案例演示完整解算过程,是入门GNSS定位技术的实用教程。

weixin_42524226的博客 359

基于深度学习的道路裂缝检测系统完整教程

本文介绍了一种基于深度学习的道路裂缝检测系统完整解决方案。项目采用5466张高质量道路裂缝图像数据集,包含YOLO和Pascal VOC两种标注格式,覆盖多种道路场景。系统利用CNN和YOLO算法实现高效检测,相比传统人工巡检显著提升效率和准确性。文中详细阐述了数据集结构、环境配置和训练流程,包括数据预处理、智能分割策略和质量检查方法。该技术可及时发现道路裂缝隐患,降低维护成本,保障交通安全,为道路养护提供智能化解决方案。

FJN110的博客 297

使用DrawerLayout+ActionBar实现侧拉效果

import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support...

qq_42795723的博客 356

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SlidingPaneLayout,DrawerLayout,ActionBar,NavigationView 详解 <三> NavigationView,DrawerLayout 结合ActionB

参考:http://blog.youkuaiyun.com/Rodulf/article/details/50419899 代码: NavigationView,

Kodulf的专栏 1086

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SlidingPaneLayout,DrawerLayout,ActionBar,NavigationView 详解 <一> DrawerLayout 和ActionBar的联动

1: 首先修改布局 把主的布局修改为android.support.v4.widget.DrawerLayout 2:然后添加两个LinearLayout的布局,在第二个里面添加一个参数android:layout_gravity="left|start",千万记住了,这里是layout_gravity而不是gravity 这样就可以实现抽屉的作用了 布局如下: xml versio

Kodulf的专栏 1431

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

151228 侧滑菜单:Drawerlayout和ActionBar 一起使用的,侧滑菜单:SlidingPaneLayout,NavigationView,TabLayout

一:侧滑菜单:Drawerlayout和ActionBar 一起使用的 二:侧滑菜单:SlidingPaneLayout 三:NavigationView 需要导入v4包 四:TabLayout TabLayout和ViewPager联动的。 侧滑菜单都是在V4包下面的rawerLayout,v4没有xml文件,所有编辑器没有办法提示出来。 androi

Kodulf的专栏 1376

ActionBar

ActionBar 1、ActionBar是谷歌在安卓3.0时候推出的一种标题栏控件,其主要目的是为了消除安卓中的菜单按键,统一安卓的显示界面。ActionBar主要包含四部分:app图标,试图控件,操作按钮,更多操作      注意:1、使用ActionBar必须使用带ActionBar的主题                  2、考虑到向下兼容的问题,Activity必须继承

岁月静好,与珊到老! 682

Android沉浸式DrawerLayout实现:fitsSystemWindows原理与实战避坑

在Android应用开发中,沉浸式UI设计是提升用户体验的关键技术之一,它允许应用内容延伸到系统状态栏和导航栏区域。其核心原理在于系统窗口(Window)与视图层(View)的协同机制,通过WindowInsets对象传递系统栏的尺寸信息,并由fitsSystemWindows属性控制视图的内边距自动调整。这项技术的工程价值在于能够最大化屏幕利用空间,实现视觉上无缝衔接的现代应用界面。典型的应用场景包括侧滑抽屉导航、全屏媒体播放以及需要沉浸式阅读的应用。本文聚焦于DrawerLayout这一常用导航组件,深

weixin_30387799的博客 485

使用SlidingMenu和DrawerLayout分别实现左右侧边栏

Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏 侧滑菜单 是Android应用中十分常见的界面效果,可随主屏在左侧或右侧联动,是特别适应手机等小屏幕特性的典型界面设计方案之一,常用作应用的操作菜单,如图所示   实现侧边栏可以使用第三方组件slidingmenu实现和Google官方提供的滑动抽屉组件DrawerL

WOL965的博客 663

android 图标关联,Android ToolBar自定义图标,关联DrawerLayout

Android5.0出现了一个可以代替ActionBar的控件ToolBar,使用更加灵活,一般我们使用ToolBar来和DrawerLayout配合使用,官方提供了一个开关类ActionBarDrawerToggle,来实现ToolBar和DrawerLayout的关联,但是 有时根据我们的需求需要更改左侧的图标,不在需要系统默认的三条杠的图标同时点击图标还想要DrawerLayout的侧拉页面...

weixin_35275162的博客 337

foobar2000 音乐播放上手指南:用 foobox-cn 配好本地播放与网络电台

foobox-cn 是 foobar2000 的一套 DUI 皮肤配置,把本地音乐播放和网络电台装进同一个界面里,装完即可直接使用。下文按实际使用顺序走一遍:先完成安装和主题选择,再看日常听歌时最常用的三个功能,最后是参数调优和故障排查,全程不需要你写任何代码。 ## 第一次打开:装好组件再调界面 ### 组件装齐,面板才完整 foobox-cn 本身只是一套界面配置,真正撑起各个面板的是第

gitblog_00624的博客 1048

Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏

一、问题描述   侧边栏是Android应用中十分常见的界面效果,可随主屏在左侧或右侧联动,是特别适应手机等小屏幕特性的典型界面设计方案之一,常用作应用的操作菜单,如图所示   实现侧边栏可以使用第三方组件slidingmenu实现和Google官方提供的滑动抽屉组件DrawerLayout实现,下面就分别使用这两种方法实现左右滑动的侧边栏 二、先使用...

weixin_34250434的博客 98

v4包自带的侧拦菜单

v4包自带的侧拦菜单 1、必须以DrawerLayout布局为根布局 2、侧拦菜单必须设置android:layout_gravity="left"或者"right"     android:layout_width="match_parent"     android:layout_height="match_parent" >             an

GitLqr的博客 426

Android沉浸式状态栏全攻略:从原理到实战,解决闪动与异形屏适配

在Android应用开发中,系统UI的适配是提升用户体验的关键环节。其核心原理在于理解Window、DecorView与System UI的层级关系,通过控制状态栏的透明度、颜色和布局行为,实现内容与系统界面的无缝融合。这项技术的工程价值在于能够显著增强应用的视觉沉浸感和整体质感,尤其适用于追求界面美观的社交、视频、阅读等类型应用。随着全面屏、刘海屏等异形屏的普及,开发者还需处理安全区域适配问题,避免内容被遮挡。本文聚焦Android沉浸式状态栏的实现,深入探讨了如何解决React Native等框架中常见

weixin_33937499的博客 659

用Android自带的DrawerLayout和ActionBarDrawerToggle实现侧滑效果

首先上效果图: 先说一下toolbar上的箭头实现: // 这两句显示左边的三条杠,如果要变为白色在toolbar的布局文件里添加这两句:// android:popupTheme="@style/ThemeOverlay.AppCompat.Light"// app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionB

miyuexingchen的专栏 1万+
上一篇: SlidingPaneLayout,DrawerLayout,ActionBar,NavigationView 详解 <二>SlidingPaneLayout 的 简单的使用
下一篇: SlidingPaneLayout,DrawerLayout,ActionBar,NavigationView 详解 <三> NavigationView,DrawerLayout 结合ActionB
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值