栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

片段设计:通过在单个Activity中显示/隐藏片段来适应多种屏幕布局?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

片段设计:通过在单个Activity中显示/隐藏片段来适应多种屏幕布局?

此答案由@Taylor克拉克是相当翔实。但是,这并不是我在原始问题中提出的使用单一活动方法的实际经验共享。我着手修改Android开发人员指南中的新闻阅读器示例,以使用单一活动方法,并提出了一个可行的解决方案。

尚待观察的是什么情况下这种方法比多重活动方法更可取(或者根本没有这样的情况)。另外,我没有详细研究问题编辑1中描述的3窗格方案。

我希望很快发布我的整个项目,但这是我如何进行的快速概述:

  • 单曲
    Activity
    :NewsActivity
  • 两个片段:
    TitlesListFragment
    DetailsFragment
  • 这两个片段始终存在于中
    NewsActivity
    。根据当前的双重窗格,我显示/隐藏适当的片段。

我遇到的一些问题:

是否将布局指定为双窗格:

在原始的新闻阅读器示例中,双窗格布局具有

frameLayout
用于保存新闻详细信息的。通过测试是否存在此帧布局,我们可以确定我们当前是否处于双窗格布局。

但是,在我的解决方案中,两个片段始终存在于所有布局中。我通过包含破解这

View
与ID
dualPane
,并
android:visibility="gone"
在这些布局,我想成为的双窗格和省略的单面板布局这一观点。然后,这是一个问题

mDualPane = findViewById(R.id.dualPane)!=null;

编辑:

与拥有虚拟视图相比,有更好的方法来指定双重窗格。我更喜欢的是创建一个布尔资源。例如,我有

config.xml
如下内容:

<resources>    <bool name="dual_pane">false</bool></resources>

然后,我可以将其他

config.xml
文件放在
values-xlarge-land
values-port
values-sw600dp
等文件夹中,并根据需要将布尔值调整为
true
false

然后,在代码中

getResources().getBoolean(R.bool.dual_pane);

关闭细节片段

这是区分

Activity
收盘价和
Fragment
收盘价的问题。最后,我必须重写
onBackPressed()
如下:

  • 在双窗格模式下,只需调用
    super.onBackPressed()
  • 在单窗格模式下,如果我们在
    TitlesListFragment
    ,请致电
    super.onBackPressed()
  • 在单窗格模式下,如果我们在
    DetailsFragment
    ,则将其视为关闭片段。这意味着将其隐藏并显示
    TitlesListFragment

这不是理想的,但是这是我能想到的最好的方法。

编辑

根据@SherifelKhatib在评论中的建议,有一种更简洁的方法可以处理后退按钮的操作:只需将其显示/隐藏明细片段的事务添加到Fragment
backstack中即可。这样,当您按下“后退”按钮时,片段事务将被撤消。如果您希望单击其他按钮,也可以手动弹出后退堆栈。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号