【问题标题】:Android almost same code to fit different layoutAndroid几乎相同的代码以适应不同的布局
【发布时间】:2013-05-14 21:53:58
【问题描述】:

(首先我很抱歉我的英语不好......)

作为标题,我知道以下布局以匹配不同的屏幕:

res/layout/main_activity.xml  For handsets (smaller than 600dp available width)
res/layout-sw600dp/main_activity.xml For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml For 10” tablets (720dp wide and bigger)

在我的 APP 中,我使用 ViewPagerAdapter 来管理我的内容。

我为电话设备获得了 3 个页面流:

当然,用户同时只能看到一页。

现在,我想为 7" 平板电脑设置一些不同的布局:

我想将 WebView 放在布局的左侧,并使其与 ViewPagerAdapter 隔离, 以便它始终可见。

另外2个页面将被放在布局的右侧,并使其充当ViewPager(可以向左/向右滑动)。

两个版本的布局将使用相同的代码来管理,但正如您所看到的,页面流程有一点不同。所以我必须做一些改变来归档我的目标。

这可能吗?

【问题讨论】:

标签: android layout android-viewpager tablet


【解决方案1】:

为了以尽可能少的工作量实现您的布局,您可能希望使用嵌套片段:无论您使用什么设备,每个 ViewPager 面板都将由“智能”容器片段处理。

Nested fragments description on "Android developers"

容器 Fragment 处理在创建视图时应加载哪些片段的逻辑,方法是检查当前加载的布局中存在的片段/视图的 id 并根据需要创建/附加片段。

例如,在 Android 手机上,第一个面板的布局可能仅包含 R.id.title,而不是 R.id.list 标识符:容器片段可以通过检查 findViewById(R.id .list) 为 null 并仅创建标题片段(在平板电脑上结果不会为 null)。

如您所见,由于Android会自动加载正确的布局文件,您不需要实现太多逻辑:)

剩下的唯一任务是根据屏幕(手机/平板电脑)的几何形状更改 ViewPager 显示的页面数,您可以在 Activity 的 onCreate 方法中执行此操作。

请记住,如果您的应用的方向因设备旋转而发生变化,这最后一步可能会很棘手。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 2023-03-27
    • 1970-01-01
    • 2017-03-15
    • 2023-02-04
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多