我绝望了。我有一个SIMPLE hello world应用程序,有一个向导空活动和两个布局:
RES /布局/ activity_main.xml中 RES /布局小/ 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-&gt; 3.7&#34; 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-&gt; Clean&amp;重启eclipse但不起作用。此外,我已完全重新安装Eclipse和ADT插件,问题仍然存在。 Finnaly我尝试删除所有构建路径内容以强制执行eclipse重建,但也不起作用。
我感谢任何帮助。谢谢。
答案 0 :(得分:0)
来自Providing Resources documentation:
注意:使用大小限定符并不意味着资源仅适用于该大小的屏幕。如果您不提供具有更好地匹配当前设备配置的限定符的备用资源,则系统可以使用best match中的任何资源。
小,正常,大和xlarge大小限定符的限制是最小值(参见Supporting Multiple Screens),小限定符的最小密度是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。即使您不一定针对平板电脑,信息仍然相关。