我读了这个
” 过去,Android会使用单个传递来处理 RelativeLayout定义的规则。这意味着你无法引用一个小部件 (例如,通过android:layout_above)直到它在XML中声明。这个 定义一些布局有点复杂。从Android 1.6开始, Android使用两个传递来处理规则,因此您现在可以安全地使用 转发对尚未定义的小部件的引用。 “
我不知道是什么问题可能是日食问题,但即使我使用2.3我仍然有问题当我引用一些未声明喷射的视图所以对我来说似乎android不使用两个进程来处理相对布局的规则。
注意:当我从其他窗口小部件引用该窗口小部件时声明窗口小部件和@id / widget_name时,我总是使用@ + id / widget_name。我注意到即使我只想引用该小部件,我也可以使用@ + id / widget_name。我想这是错的,但为什么有时候没有任何投诉?在我看来,应该允许一个小部件只被声明为...
我的问题是android真的使用了两次传递吗?我需要一些使用相对布局的指南(最佳实践)
我对这种相对布局的制作方式感到困惑,所以欢迎任何解释
由于
答案 0 :(得分:2)
@+id/name
会创建一个新ID,如果它尚不存在。 @id/name
引用现有ID,永远不会创建一个。
我不确定您是否可以在@id/name
之前使用同一文件中的@+id/name
。如果没有,我可以想到两个解决方法:
始终使用@+id/name
。
定义ids.xml
文件中的所有ID,并始终使用@id/name
。
答案 1 :(得分:1)
This是关于Android如何绘制视图的一般信息。 我认为Android在所有视图中都会传递两次,但它不会通过每个视图一次。因此,如果你有一个xml到另一个xml的引用它总是可以正常工作,但是如果你在一个xml中有引用,你必须小心地正确地在xml中对这些元素进行排序。例如,我的RelativeLayout中有view1和view2。如果我想从view1引用view2,我必须在view1之前声明view2。