实现滚动导航抽屉的最佳方法

2024-01-24

我一直在向我的一个应用程序添加导航抽屉,我开始想知道从使用导航抽屉切换是否会更好ListView到多个TextViews 表示抽屉式导航列表项。看着关于导航抽屉内容的 Google 设计指南(特别是“滚动”部分) http://www.google.com/design/spec/patterns/navigation-drawer.html#navigation-drawer-content,我注意到用多个看起来可能会更好TextViews.

目前,我正在使用ListView and ImageView在我的导航抽屉中(看起来有点像this http://material-design.storage.googleapis.com/publish/material_v_3/material_ext_publish/0Bx4BSt6jniD7LWFrRENhVVJrYzQ/patterns_navdrawer_selection1.png。但是,当我在导航抽屉中滚动时(我通过转动设备横向来执行此操作,因为列表中还没有足够的项目),只有ListView卷轴,以及ImageView保持原样。我希望它能够像这样滚动这,其中ImageView也随着滚动ListView http://material-design.storage.googleapis.com/publish/material_v_3/material_ext_publish/0Bx4BSt6jniD7MFMyT2ZxcTZXb3c/patterns_navdrawer_scrolling2.png.

另外,我发现我的ListView在我的导航抽屉中没有连锁反应如图所示 http://material-design.storage.googleapis.com/publish/material_v_3/material_ext_publish/0Bx4BSt6jniD7LWFrRENhVVJrYzQ/patterns_navdrawer_selection1.png虽然其他ListView在我的另一个Activitys and Fragments do.

我面临哪些问题以及如何解决这些问题?

Update:

在Google的I/O App(2014)中,似乎有一个LinearLayout在底部抽屉式导航布局 https://github.com/google/iosched/blob/master/android/src/main/res/layout/navdrawer.xml我认为这是显示项目列表的原因。有人可以解释这是如何工作的吗?


只有 ListView 滚动,而 ImageView 保持原样

听起来你的抽屉里有一个ImageView在顶部,然后ListView接下来。通过此配置,仅ListView将滚动(因为它是唯一可滚动的视图)。

您需要添加ImageView作为始终位于列表开头的标题。正如评论之一所建议的那样,listView.addHeaderView.

导航底部似乎有一个 LinearLayout 我认为抽屉布局负责项目列表 显示。有人可以解释这是如何工作的吗?

他们使用LinearLayout作为一个容器来容纳所有TextViews:

private void createNavDrawerItems() {
    mDrawerItemsListContainer = (ViewGroup) findViewById(R.id.navdrawer_items_list);
    ...
    int i = 0;
    for (int itemId : mNavDrawerItems) {
        mNavDrawerItemViews[i] = makeNavDrawerItem(itemId, mDrawerItemsListContainer);
        mDrawerItemsListContainer.addView(mNavDrawerItemViews[i]);
        ++i;
    }
}

我相信他们使用的原因LinearLayout并以编程方式膨胀所有项目是为了能够轻松使用分隔符项目:

private View makeNavDrawerItem(final int itemId, ViewGroup container) {
    ...
    if (itemId == NAVDRAWER_ITEM_SEPARATOR) {
        layoutToInflate = R.layout.navdrawer_separator;
    } else if (itemId == NAVDRAWER_ITEM_SEPARATOR_SPECIAL) {
        layoutToInflate = R.layout.navdrawer_separator;
    } else {
        layoutToInflate = R.layout.navdrawer_item;
    }
    ...
    return view;
}

In a ListView您必须创建一个单独的项目类型并在那里使用分隔线的布局,这可能会变得更加麻烦。

乍一看然而,这段代码似乎只是在重新发明轮子,因为所有这一切都可以通过ListView.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现滚动导航抽屉的最佳方法 的相关文章

  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • Kapt 未在即时应用程序功能模块中生成类

    我在我的 Android 应用程序中使用 dagger2 即使没有错误 它也不会生成匕首组件类 我已经在设置中启用了注释处理器并重新启动了我的 android studio 但这对我来说不起作用 我也读过这个帖子Dagger2 不生成 Da
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • Android Manifest 自动生成无效权限

    我不小心在 Android 清单中输入了无效的权限名称 并且无法将其删除 这是我的清单代码
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • 如何将 Android Instrumentation 测试推送到模拟器/设备?

    我正在尝试使用 Ubuntu 9 04 中的命令行 shell 在 Android 模拟器上运行 Webkit 布局测试 adb s emulator 5554 shell am instrument w com android dumpr
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • Android 5.0 Lollipop 中屏幕固定关闭时如何收到通知?

    我有一个在后台运行的应用程序 并在手机上发生特定事件时启动活动 我发现在 Android 5 0 中 当用户使用另一个应用程序打开屏幕固定时 startActivity intent 调用将被完全忽略 我的应用程序不知道该活动尚未启动 因此
  • 如何忽略 LeakCanary 中的某些类?

    有人能给我一个如何忽略 LeakCanary 中的某些类的有效示例吗 我正在查看这个示例 以忽略 LeakCanary 中第三方库中的某些类 但我不知道将其放在应用程序中的何处 我把它放在我的应用程序类中 但这些变量和方法有错误 isInA
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • 如何在Android网格视图中设置单元格大小?

    我正在尝试为应用程序制作一个带有大图标的网格视图 但我找不到任何有关修改 Android 上网格布局上的单元格大小的教程 有人可以给我一个例子或相关链接吗 Thanks 就像另一个一样适配器视图 http developer android
  • 使用 UPI url 调用 PSP 应用程序

    我正在尝试创建一个商家应用程序 它将根据 NPCI 的指南生成一个 url 此 url 将作为意图共享 并且 PSP 应用程序 任何注册的银行应用程序 应该能够侦听该 url 并被调用 我已经形成了这样的网址 upi pay pa icic
  • 在 android 中,第一次单击时按钮侦听器未注册

    因为我是 Android 新手 所以我遇到了按钮监听器的问题 我正在使用 OnClickListener 来处理胸像 但它第一次点击后不执行一旦我单击多个 它就会表现良好 但如何使其在第一次单击时成为可能 这是我的代码 public cla
  • 使用后退按钮启动 Activity

    我正在 Android 中开发一个应用程序 我正在寻找解决方案 有一个活动 例如 A1 通过单击按钮 用户可以转到另一个活动 例如 A2 现在 一旦用户完成 A2 活动 他就会单击后退按钮 返回到上一个活动 A1 这是众所周知的事实 A1此
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • BitmapFactory.decodeResource() 忽略 jpg 图像的 inPreferredConfig 选项

    我尝试将jpeg资源图像加载到ARGB 8888格式的位图 BitmapFactory Options opts new BitmapFactory Options opts inPreferredConfig Bitmap Config
  • 将 Crashlytics 集成到图书馆项目

    我有一个图书馆项目 自定义视图库项目 它没有任何活动 服务 我想将 Crashlytics SDK 集成到我的库中 当我尝试通过 Android Studio 的 Crashlytics 插件 工具栏中的图标 添加它时 它只是停留在 Che
  • 制作弹跳动画

    我想做图层的弹跳动画 我已经完成了该图层从右到中心的操作 现在我想将其向后移动一点 然后回到中心 这会产生反弹效果 我想我可以用这样的翻译来做到这一点
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports

随机推荐

  • w8 默认平板电脑设置与 WPF 布局冲突

    我有一个 WPF 桌面应用程序 我收到 W8 用户的报告 称我们应用程序中的代码完成窗口未正确对齐 我调查发现它是W8平板电脑设置中的一个设置与wpf中弹出窗口的位置冲突 Default is right handed and then t
  • 一个表可以有两个外键吗?

    我有下表 主键bold 外键输入Italic 顾客表 ID 姓名 平衡 帐户名称 帐户类型 账户类别表 帐户类型 平衡 客户明细表 帐户名称 名字 姓氏 地址 我可以在 Customer 表中有两个外键吗 如何在 MySQL 中实现这一点
  • Yii 高级 url 重写

    注意 ANYTHING ELSE 因此 我有我的控制器和操作 我希望它们能够正常运行 以响应如下示例 for UserContoller with actionList and actionEdit user list user edit
  • 使用 ModelAndView 进行 Spring MVC 验证

    我正在尝试向我的 Spring MVC 应用程序添加验证 在尝试设置验证之前 我一直使用 ModelAndView 来提供 jsp 页面 但错误消息不显示 Model Entity Table name employee public cl
  • 3 个 div 并排 - 中心一个固定宽度,其他 div 占据屏幕空间的其余部分

    我一整天都在尝试为我的网站创建一个 容器 我需要并排放置 3 个 div 中心 div 具有固定宽度 800px 并且位于屏幕中央 其他 div 必须占据左右两侧的所有剩余空间 左边的 div 将位于顶部的某个位置 右边的 div 将位于底
  • 如何从 JTextPane 中获取选择

    我想找出 JTextPane 文本的哪一部分被选中 尝试打电话JTextPane getSelectionStart and JTextPane getSelectionEnd 但它们总是返回等于当前插入符号位置的相同值 我的问题是什么 我
  • 使用网格几何形状和屏幕尺寸根据窗口尺寸调整小部件尺寸

    我想使用网格几何形状根据窗口的大小更改小部件的大小 最大化或最小化 例子 如果创建了一个窗口 并且它的外观在最小化模式下实现 但在扩展时它会显示一些空白空间 我想以这种方式扩展小部件来填充该空白空间 如果改变 LCD 窗口看起来应该是一样的
  • 第一次开发Android应用程序时如何修复java中的“R.menu.main”?

    所以我下载了 Android 应用程序教程告诉我的所有内容 并且我正在使用 Eclipse 但我不断收到错误消息main in R menu main public boolean onCreateOptionsMenu Menu menu
  • Python 套接字超时错误

    我正在 Python 2 7 中编写一个非常简单的 udp 套接字连接 服务器端已启动并运行 我在客户端遇到麻烦 from socket import serverName 127 0 0 1 serverPort 5444 counter
  • 使用 PyDub 消除波形文件开头和结尾处的静音

    如何使用 PyDub 消除波形文件开头和结尾的静音 我想我应该逐段访问并检查它是否静音 但我无法做到 例如我有一个在开头 结尾或两者都有静音的波形文件 如下所示 我想删除文件开头和结尾的静音 例如我想导入它 sound AudioSegme
  • Crystal Report 组汇总总和

    我有一份报告 其中我试图将一组的摘要汇总到另一组 前任 group 1 75 lt sum of the maximums group 2 50 lt max of the group line 1 50 line 2 40 line 3
  • Rails 范围和连接

    我已经尝试了所有我认为可行的方法 但一无所获 在 Rails 3 中 我需要找到车上有 CD 播放器的所有用户 一辆车有一个用户和一台收音机 一个用户属于一辆车 一台收音机有很多辆车 我偶然发现如何通过用户模型中的范围执行此搜索 class
  • 在 SQL Server 中使用标识列为 INSERT 语句指定“NEXT VALUE”

    考虑下表和 SQL微软的INSERT文档 https technet microsoft com en us library dd776381 v sql 105 aspx ColumnValues处理 IDENTITY 列 CREATE
  • Terraform - 将策略附加到 s3 存储桶

    我之前创建了一篇文章来解决创建多个 s3 存储桶而不尝试重复代码的问题 效果很好 Terraform 创建多个存储桶 https stackoverflow com questions 53764505 terraform creating
  • Outlook 中的 VBA 搜索

    我有这个代码可以在我的文件夹中搜索 我确实有一封主题为 sketch 的电子邮件 但 VBA 没有找到它 它转到 ELSE 子句 谁能告诉我出了什么问题吗 Set olApp GetObject Outlook Application Se
  • 直接将单个 XML 文件转换为 DOCX

    我尝试将单个 XML 文件转换为 DOCX 文件 方法是使用 XSLT 将 XML 转换为 XHTML 然后在 MS Word 上打开 XHTML 并将其另存为 DOCX 但我的任务是将任何 XML 结构 DITA TEI DocBook
  • 在 Raspberry Pi 上使用带有 PyAudio 的麦克风时出现 IOError:[Errno 通道数无效] -9998

    各位 坏消息来了 我尝试通过 PyAudio 在 Raspberry Pi 上使用麦克风 但没有成功 麦克风连接到 USB 声卡 当我通过 arecord 时麦克风工作 pi raspberrypi arecord D plughw 0 0
  • TortoiseGit:如何暂时切换到早期版本

    在 Git 中 我对主分支进行了一系列更改 并且还创建了一个名为 BeforeDynamicCasts 的标签 我希望暂时切换到 BeforeDynamicCasts 然后恢复到我的主分支 我该怎么做 我可以切换 签出标签 但不确定之后如何
  • 在 ASP.NET MVC 3 中以编程方式更改 Web Config 中的自定义错误模式

    如何以编程方式更改 web config 文件中的自定义错误模式 我需要更改以下内容
  • 实现滚动导航抽屉的最佳方法

    我一直在向我的一个应用程序添加导航抽屉 我开始想知道从使用导航抽屉切换是否会更好ListView到多个TextViews 表示抽屉式导航列表项 看着关于导航抽屉内容的 Google 设计指南 特别是 滚动 部分 http www googl