【问题标题】:Layout small always opened after choose any device in Graphical Layout在图形布局中选择任何设备后,布局小总是打开
【发布时间】:2014-07-04 03:26:36
【问题描述】:

我很绝望。我有一个简单的 hello world 应用,有一个向导空活动和两个布局:

res/layout/activity_main.xml res/layout-small/activity_main.xml

activity_main.xml 两个文件的内容相同:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:padding="10dp"
android:text="@string/hello_world" />
</RelativeLayout>

如果我首先打开 layout/activity_main.xml 没问题,图形布局加载布局没问题,但是如果我在设备列表图形布局管理器中选择例如设备 Generic->3.7" WVGA(它不小)打开 layout-small/ activity_main.xml,如果我尝试将设备更改为任何设备,我会收到此控制台日志:

[2014-07-03 20:50:39 - prueba_layout] 'default' is not a best match for any device/locale combination.
[2014-07-03 20:50:39 - prueba_layout] Displaying it with ', , Locale Language ___Region __, Left To Right, sw320dp, w320dp, h480dp, Normal Screen, Short screen aspect ratio, Portrait Orientation, Normal, Day time, Medium Density, Finger-based touchscreen, Hidden keyboard, Qwerty keyboard, Hidden navigation, No navigation, Screen resolution 480x320, API Level 19'

我已经尝试过 Project->Clean & restart eclipse 但不起作用。另外我已经完全重新安装了 Eclipse 和 ADT 插件,问题仍然存在。最后我尝试删除所有构建路径内容以强制 Eclipse 重建,但也不起作用。

感谢您的帮助。谢谢。

【问题讨论】:

    标签: android eclipse android-layout


    【解决方案1】:

    来自Providing Resources documentation

    注意:使用尺寸限定符并不意味着资源仅适用于该尺寸的屏幕。如果您没有提供具有更好匹配当前设备配置的限定符的替代资源,系统可能会使用best match 中的任何资源。

    small、normal、large 和 xlarge 尺寸限定符的限制为 最小值(请参阅 Supporting Multiple Screens),small 限定符的最小密度为 426dp x 320dp。

    如果没有其他目录更匹配,layout 目录是备用目录。由于layout-small 匹配任何大于 426dp x 320dp 的屏幕尺寸,因此市场上的绝大多数设备都会匹配并使用此目录。

    解决方案

    有几种方法可以解决这个问题。最简单的可能是从layout 复制资源并将它们放入layout-normal 以便所有大于“小”的东西都获得“正常”资源。

    您也可以将普通资源放在layout-normal 文件夹中,将小资源放在layout 文件夹中,然后完全删除layout-small 目录。

    您还应该知道,从 Android 3.2(API 级别 13)开始,使用 small/normal/large/etc。大小组已弃用。相反,您应该使用屏幕宽度限定符,它不仅提供更多粒度,而且更明显地表明这些限定符指定最小值,而不是绝对匹配。

    有关使用屏幕尺寸限定符的更多信息,请参阅Declaring Tablet Layouts。即使您不一定针对平板电脑,这些信息仍然是相关的。

    【讨论】:

    • 好的,但是当我在模拟器中运行应用程序时 res/layout/activity_main.xml 显示在图形布局加载layout-small的同一设备中,为什么?
    • 确定将在现实世界中加载哪种布局的最佳方法是在实际设备上进行尝试。有时模拟器或 IDE 的布局编辑器会做一些奇怪的事情,如果不了解更多关于您的特定应用程序和环境的信息,就很难对您看到的行为进行故障排除。
    • 该应用程序是一个使用向导创建的简单 Hello 世界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多