如何在Android上实现嵌套的主细节流程?

2024-01-21

我有一个列表、列表中、列表中等等。大概有5层吧

在手机上为每个列表创建 5 个活动很容易,但如果我也想支持平板电脑怎么办?所以我需要使用主细节流程。

但是,我似乎找不到与嵌套主详细信息流程相关的任何教程或信息。

不管怎样,这是我所描述内容的一个例子:

在平板电脑布局中,我希望屏幕一次移动两层。用户可以通过从右侧层选择列表项来前进到下一层。要返回上一层,用户可以点击后退按钮。

知道我该如何实现这一目标吗?


经过一整天的互联网搜索,我终于找到了解决方案。要获得“嵌套主详细信息流”效果,只需使用 ViewPager 和 FragmentPageAdapter 即可。主细节流程将如下所示:

要在用户切换到横向时更改为两个面板模式,请在扩展的 FragmentPagerAdapter 类中重写以下方法:

@Override
public float getPageWidth(int position) {
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    // if the width is greater than 900dp halve the width of the page
    if ((metrics.widthPixels / metrics.density) > 900) {
        return (0.5f);
    }
    return super.getPageWidth(position);
}

为视图寻呼机提供“向上按钮”:

viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    // This method will be invoked when a new page becomes selected.
    @Override
    public void onPageSelected(int position) {
        if (position == 0) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        } else {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }

    }
});

您可以告诉“向上按钮”返回这样的页面(其中 viewpager 是您的活动的成员变量,保存对 ViewPager 的引用):

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int position = viewpager.getCurrentItem();
    if (position > 0) viewpager.setCurrentItem(position-1);
    return true;
}

参考:

ViewPager 与 FragmentPagerAdapter https://github.com/codepath/android_guides/wiki/ViewPager-with-FragmentPagerAdapter

在操作栏上显示后退按钮 https://stackoverflow.com/questions/15686555/display-back-button-on-action-bar

多视图 ViewPager 选项 https://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

如何使用不同的片段/布局实现 ViewPager https://stackoverflow.com/questions/18413309/how-to-implement-a-viewpager-with-different-fragments-layouts and 示例 github 项目 https://github.com/KENJU/ViewPagersWithMultipleFragmentsSample

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

如何在Android上实现嵌套的主细节流程? 的相关文章

  • 让协程等待之前的调用

    我还没有完全掌握 Kotlin 协程 基本上我希望协程在执行之前等待任何先前的调用完成 下面的代码似乎可以工作 但它正在做我认为它正在做的事情吗 private var saveJob Job null fun save saveJob s
  • 如何在android中压缩和解压png图像

    您好 在我的应用程序中 当我单击 zip 按钮时 我需要压缩图像文件 当我单击解压缩按钮时 我需要解压缩文件 我尝试使用下面的代码来压缩图像 但我的问题是当我单击 zip 按钮时 正在创建 zip 文件 但之后在使用 winzip 软件的系
  • 如何在 android 中启动“添加联系人”活动

    您能告诉我如何在 Android 中启动 添加联系人 活动吗 谢谢 API 级别 5 及以上解决方案 Add listener so your activity gets called back upon completion of act
  • API29 上不推荐使用 setColorFilter

    我使用以下行来更改 VectorDrawable 的颜色 mydrawable getBackground setColorFilter color PorterDuff Mode SRC ATOP 这很好用 尽管它现在已被弃用 文档建议我
  • 不变违规:requireNativeComponent:在 UIManager 中找不到“RNSVGSvgViewAndroid”

    我对标题中提到的错误感到头疼 我正在使用react native gifted charts https www npmjs com package react native gifted charts v 1 0 3 https www
  • Google 地图删除标记路线上下文菜单

    我使用 Android Studio 的 Google 地图模板启动了一个新项目 并在地图上添加了一个标记 LatLng location new LatLng lat lng Marker marker mMap addMarker ne
  • Android中如何检测WIFI连接何时建立?

    我需要检测何时通过 WIFI 建立网络连接 发送什么广播来确定已建立有效的网络连接 我需要验证是否存在有效的 HTTP 网络连接 我应该监听什么以及需要进行哪些额外测试才能知道是否存在有效连接 您可以注册一个BroadcastReceive
  • 在选项卡上保存数据

    我有 3 个选项卡 每个选项卡都有一个单独的活动 我想在用户单击任一选项卡上的 保存 时保存数据 有几个选项可供选择 共享首选项 全局变量或将对象保存在上下文中 编辑 我必须保存图像和文本字段 Android 共享首选项 https sta
  • 如何在 NumberPicker 中一次显示 3 个以上的值

    我正在创建一个数字选择器 如下图所示 但如果有可用空间 我想显示 3 个以上的值 该选择器有 20 个项目 并且有足够的空间来显示 3 个以上的值 这可以使用 NumberPicker 来完成吗 只需以编程方式设置numberPicker
  • 适用于 Android 的 Google 云端硬盘\文档 API

    我在几个小时内将 Dropbox 与我的应用程序集成 因为 SDK 描述清晰并且有很好的使用示例 Google Drive 似乎只有一个 一刀切 的 Gdata SDK 它非常重 有很多依赖项 它使我的应用程序的大小增加了三倍 而且不是很直
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 如何在 Android 上将动态 alpha 遮罩应用于文本

    I want to make a dynamic alpha mask with drawable shapes as circles or whatever and apply it to a drawed text on Android
  • Activity 类型中的方法 showDialog(int) 在 Android 中已被弃用?

    方法showDialog int 从类型Activity is 已弃用 什么原因 以及如何解决 什么原因 http developer android com reference android app Activity html show
  • 如何关闭 EditText 中的建议?

    如何在 Android 中关闭 EditText 中的建议 android inputType textNoSuggestions 根据this http comments gmane org gmane comp handhelds an
  • 在 Nougat 7.1.1 中点击应用程序快捷方式时出现应用程序未安装错误

    我在向现有应用程序添加静态应用程序快捷方式时遇到一些问题 我按照以下步骤操作https developer android com guide topics ui shortcuts html https developer android
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 如何在Android中创建一个简洁的两栏输入表单?

    我想创建一个整洁的两列输入表单 如下所示 到目前为止我的 xml 布局代码
  • 可能的透支:根元素绘制背景

    在我的应用程序中 Android 的 lints 上出现此警告 可能的过度绘制 根元素使用 drawable main 绘制背景 还绘制背景的主题 推断的主题是 android style Theme 我想知道如何纠正这个错误 因为在互联网

随机推荐

  • 我想在服务器上 24/7 运行 Python 脚本 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在制作一个模拟虚拟货币股票市场的程序 我还没有尝试过任何东西 但我想要一个Python脚本能够24
  • 数据库时区问题

    我在尝试与数据库 MySQL 建立连接时收到此错误 java sql SQLException 服务器时区值 CEST 无法识别或代表多个时区 如果要利用时区支持 则必须配置服务器或 JDBC 驱动程序 通过 serverTimezone
  • 为什么我的 Mac (OS X 10.7.3) 有旧版本 (2.3) 的 Gnu Bison?

    我的 mac 上的 GNU Bison 版本是 2 3 但我知道 Bison 2 5 很久以前就发布了 这本书弗莱克斯和野牛使用2 5版本 我应该自己升级到2 5吗 有必要吗 2 3和2 5有什么区别 我在 MacOSX 10 9 5 上遇
  • 是否有任何架构使用相同的寄存器空间来进行标量整数和浮点运算?

    我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 我见过的大多数支持本机标量硬件 FP 支持的架构将它们推入完全独立的寄存器空间 与主寄 存器集分开 X86 的传统 x87 FPU 使用带有
  • 应该是 DDD 中域的本地化部分

    在遵循 DDD 概念的同时 我正在努力决定是否应该让我的域本地化意识 我提出了两个解决方案来解决这个问题 两者都使域本地化能够在不同的地方实现 我是否应该将本地化文本放入域中 分享您对此问题的解决方案或我的两个示例的优缺点 谢谢 实施例1
  • 内存管理、堆损坏和 C++

    所以 我需要一些帮助 我正在开发一个 C 项目 然而 我认为我已经设法破坏了我的堆 这是基于我添加了一个事实std string给一个类并为其分配另一个类的值std string std string hello Hello world n
  • 在SceneKit中使用Vuforia提供的投影矩阵和标记姿势

    目前 我正在尝试解决在 SceneKit 中渲染时投影矩阵和帧标记姿势的使用问题 场景中的模型和相机图像背景显示没有问题 然而 一旦我更改投影矩阵和帧标记姿势矩阵以匹配 Vuforia 所有内容都会被推到屏幕外 func didUpdate
  • Talend 中的行到列转换

    我正在学习 Talend Open studio 我想实现一行转换为3行的场景 我的来源就像 Col1 Col2 Col3 a b c 我想得到如下所示的输出 Col a b c 我使用了 tcolumntopivotdelimited 但
  • React-native 本机模块可用于 IOS 上的后台任务

    我的问题 我有一个与医疗 BLE 设备通信的应用程序 我已经一切正常 但我的问题是 当 ios 用户将应用程序放在后台时 我停止获取 处理通过蓝牙发送的消息 Android 似乎不断收到这些消息 但据我发现 在 iOS 上 JS 桥已被拆除
  • PHP 获取不带扩展名的当前页面名称?

    我想将当前页面文件名显示为页面标题 但不带扩展名 如果可能的话 第一个字符应该大写 这可能吗 每个人都喜欢俏皮话 ucfirst pathinfo SERVER PHP SELF PATHINFO FILENAME 第二个参数pathinf
  • 将变更集转换为搁置集

    是否可以仅通过 tfs tfpt 中的某些操作从一个分支的两个版本的差异创建一个搁置集 例如从 变更集 2013 gt 变更集 2034 创建搁置集 可以从具有一些限制的变更集创建搁置集 我需要从分支回滚更改以将其从版本中删除 但它也不在任
  • 如何使用php在FTP服务器上上传大文件?

    ftp server ftp abc com remote file myvideo avi file size 210MB file myvideo avi file size 210MB conn id ftp connect ftp
  • Spring数据MongoDb:MappingMongoConverter删除_class

    默认映射MongoConverter向数据库中的每个对象添加自定义类型键 class 所以 如果我创建一个人 package my dto public class Person String name public Person Stri
  • Python 中如何处理 POST 和 GET 变量?

    在 PHP 中你可以只使用 POST对于 POST 和 GET用于 GET 查询字符串 变量 Python 中的等价物是什么 假设您要发布一个 html 表单
  • 单击选项时使用 selenium 抓取 HTML [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个脚本 我用它来使用硒从网站上抓取数据 Sub Body Building Dim driver As New W
  • 使用 ifelse 函数返回 null

    我试图在 R 中使用 ifelse 返回 null 但它会抛出错误消息 任何建议请 这是我的代码 cntr1 lt ifelse unlist gregexpr path info j fixed TRUE useBytes TRUE gt
  • 找不到用于注册我的设备的 Chromecast 序列号

    我正在尝试注册我的 chromecast 设备以进行开发在控制台上 https cast google com publish overview遵循本指南 https developers google com cast docs regi
  • 如何减少大型模板的编译时内存占用?

    假设我有一个类 其中包含large其他类声明的数量 是否有可能以某种方式分散这些成本 以便嵌套类型的编译时内存消耗不会呈二次方增长 如果需要的话 我愿意减少编译时间 并且如果可以选择的话 我很乐意将其划分为不同的翻译单元 为了尝试找到解决方
  • 如何自动滚动到 RichEdit 的末尾?

    我以前从来不需要使用TRichEdit 总是使用TMemo 当我添加像 TMemo 这样的文本时 我希望 RichEdit 自动滚动到最后 看看添加一些数据后的样子 如您所见 滚动条保留在顶部 但我希望在添加文本时它保留在底部 我已经 搜索
  • 如何在Android上实现嵌套的主细节流程?

    我有一个列表 列表中 列表中等等 大概有5层吧 在手机上为每个列表创建 5 个活动很容易 但如果我也想支持平板电脑怎么办 所以我需要使用主细节流程 但是 我似乎找不到与嵌套主详细信息流程相关的任何教程或信息 不管怎样 这是我所描述内容的一个