【问题标题】:Different GUI on phone and tablet, but same app手机和平板电脑上的图形用户界面不同,但应用程序相同
【发布时间】:2011-11-19 08:14:12
【问题描述】:

我也必须为平板电脑和手机编写应用程序。这两个应用程序具有相同的功能,但它们具有完全不同的 GUI。

例如,手机在主屏幕上有 2 个按钮,但平板电脑将有 5 个,因为我们想利用现有的空间。我知道,我能够定义不同的布局,取决于 dpi,但我应该如何处理 Activiies 中的布局?我认为,使用 if(sdkVersion >=11) bla..bla... is not will work through the hole code and the hole project!这是我必须使用多个应用程序支持的情况吗?

阅读文章: http://developer.android.com/guide/practices/screens_support.html

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

http://developer.android.com/guide/market/publishing/multiple-apks.html

我不明白我应该如何处理这个问题...如果你能帮忙,谢谢

【问题讨论】:

    标签: android android-layout tablet android-screen-support


    【解决方案1】:

    将您的平板电脑布局放入res/layout-large/。将您的手机布局放入res/layout/。将它们命名相同。您的活动将根据它们运行的​​设备加载正确的活动。当您调用 findViewById() 以检索额外的按钮,并看到您返回了 null 时,请忽略它们。

    您可能需要在 res/layout-large-land/(平板电脑的横向)、res/layout-xlarge/(如果您想以不同于 5-9" 范围内的东西的方式处理 10+" 平板电脑)、res/layout-small/(如果您想处理

    【讨论】:

    • 您好 CommonsWare!感谢您的评论,但是“当您调用 findViewById() 来检索额外的按钮并看到您返回 null 时,请忽略它们。”是我想解雇的。因为我们要开始一个有很多你知道的活动的大型项目,并且总是执行 if(findViewById(R.id.btn7)==null) 会使代码很容易变得难以阅读......我正在寻找一个优雅的解决方案:)
    • @Karoly:“并且总是执行 if(findViewById(R.id.btn7)==null) 会使代码变得如此容易不可读”——什么是“总是”?使用一种称为“数据成员”的花哨的 Java 东西来保存小部件或 boolean。或者重新组织你的 UI 以利用 Fragment,因此在手机上你每个 Activity 使用一个 Fragment,但你的主要 Activity 加载的布局会带来两个 Fragment。
    • 但我看到片段带有 API 级别 11。对于平板电脑,好的,但是如果我们想在手机 (2.1,2.2.2.3) 和 talbet 上运行应用程序,我该如何使用片段
    • @Karoly:片段是 Android 兼容性库的一部分,因此可返回到 Android 1.6。
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多