【问题标题】:Android Phone recognized as "Two Pane" layoutAndroid 手机识别为“双窗格”布局
【发布时间】:2014-10-19 14:22:40
【问题描述】:

我正在编写一个具有两种不同布局的应用程序:

  • 平板电脑的两个窗格(主-详细信息)(屏幕超过 820 dp)
  • 用于手机(屏幕分辨率低于 820 dp)的单窗格(主 + 活动)

我正在不同的设备上测试我的应用程序,我有不同的(和意外的)行为: 在 Samsung Galaxy Tab 4 10'' (1280x800) 上,我得到了两个窗格布局 - 如预期的那样;但是当我在 LG Nexus 5 (1920x1080) 或 LG G2 Mini (960x540) 上尝试时,我希望得到单窗格布局,但不会发生的事情我仍然得到两个窗格布局。

在我的项目中,我有一个名为 values-w820p 的文件夹,其中包含文件 refs.xml - 如this 指南中所述。

我使用的活动也是检查方法 onCreate 上是否有空间放置两个窗格布局 - 这是代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings_list_container);

    //some creation code

    if (findViewById(R.id.settings_detail_container) != null) {
        Log.i("Two panes", "two panes");

        mTwoPane = true;

        //some two pane handling

    }
}

我哪里出错了? 为什么我不能在“小”屏幕上使用单个窗格布局?

编辑:已解决 解决方案是将“双窗格”布局放在 layout-large 下,将“单”布局放在 layout 下。

【问题讨论】:

    标签: android android-layout layout master-detail


    【解决方案1】:

    我认为您将尺寸与密度混淆了。您当然可以拥有高密度的小屏幕:这正是您的 Nexus 5 所具备的。如果您通过密度选择布局,您将在 Nexus 5 上获得双窗格布局,因为它是高密度的。

    您需要确定屏幕尺寸的布局。

    有关详细信息,请参阅 Android docs,但您的文件夹结构需要 values-large 等。

    【讨论】:

    • 我尝试删除 values-w820dp 并将其替换为 values-large,但似乎没有任何改变。
    • 尽管如此,请务必点击该链接并查看详细信息。可能是 Nexus 5 仍然“大”。例如,您可能想尝试“xlarge”。
    • 您还应该尝试将不同的TextView 组件添加到两个不同文件夹中的布局中,以检查您最终使用的布局。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多