基本上,我有2个xml布局。一个用于小屏幕尺寸,另一个用于大屏幕尺寸。在我的小屏幕尺寸的XML布局中,我真的只是复制我在大屏幕尺寸XML中的内容(保持所有内容相同,例如:id名称等),并且只更改文本大小和按钮大小。然后,在我的活动代码中使用一个条件来调用它们:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (condition){
setContentView(R.layout.bigScreenSize);
} else{
setContentView(R.layout.smallScreenSize);
}
我的问题是为什么我的应用程序没有崩溃,而是正常运行?是因为在两个XML布局上都有相同的属性ID吗?谢谢!
答案 0 :(得分:2)
您针对小尺寸和大尺寸屏幕尺寸的方法并不符合Google的建议。
为了针对不同的屏幕尺寸优化您的ui,您确实需要不同的布局,但它们必须完全相同(就ID而言)并且应该只包含在不同的布局目录中。
更多信息here
为什么我的应用程序崩溃却没有正常运行?
为什么您的应用会崩溃?让id指向不同的小部件/视图是完全正常的。只要一个人不同时指向两个不同的视图。在您的情况下,一次只使用两个布局中的一个(大或小)。所以android正确识别我在布局中引用了哪个视图。
答案 1 :(得分:1)
为什么我的应用程序没有崩溃,而是正常运行?
这是有效的,因为它真的可以使用两种布局。您可以为单个活动使用尽可能多的布局,但不能同时使用。
是因为在两个XML布局上都有相同的属性ID吗?
这不是因为您指的是相同的属性ID,而是因为您指的是两个xml布局中都可用的现有 ID。 / p>
答案 2 :(得分:1)
为什么我的应用程序没有崩溃,而是正常运行?
因为xml中提供了所需的视图(文本/按钮)。换句话说,所有id都可用于xmls。
如果ID的值或任何视图丢失/不匹配,则应用会抛出错误。