3

我读了这个

“过去,Android 会使用单通道来处理 RelativeLayout 定义的规则。这意味着在 XML 中声明它之前,您不能引用一个小部件(例如,通过 android:layout_above)。这使得定义一些布局成为有点复杂。从 Android 1.6 开始,Android 使用两次传递来处理规则,因此您现在可以安全地对尚未定义的小部件进行前向引用。"

我不知道问题是什么,也许是 eclipse 问题,但即使我使用 2.3,当我引用一些未声明为 jet 的视图时,我仍然遇到问题,所以对我来说,android 似乎没有使用两次通过来处理规则相对布局。

注意:我在声明小部件时总是使用@+id/widget_name,当我从其他小部件引用该小部件时总是使用@id/widget_name。我注意到即使我只想引用那个小部件,我也可以使用 @+id/widget_name。我想那是错误的,但为什么有时可以毫无怨言地工作?在我看来,应该只允许声明一个小部件......

我的问题是真的 android 使用两遍吗?我需要一些指南(最佳实践)来处理相关布局

我对如何进行这种相对布局配对有点困惑,所以欢迎任何解释

谢谢

4

2 回答 2

2

@+id/name如果它尚不存在,则创建一个新的 id。@id/name引用一个现有的 id,并且永远不会创建一个。

我不确定你是否可以在同一个文件中使用@id/namebefore 。@+id/name如果没有,我可以想到两种解决方法:

  1. 始终使用@+id/name.

  2. 在文件中定义所有 id ids.xml,并始终使用@id/name.

于 2011-09-12T09:56:05.707 回答
1

是有关 Android 如何绘制视图的一般信息。我认为Android会通过所有视图两次,但它不会通过每个视图一次。因此,如果您有从一个 xml 到另一个的引用,它总是可以正常工作,但如果您在单个 xml 中有引用,则必须小心正确地对 xml 中的元素进行排序。例如,我的 RelativeLayout 中有 view1 和 view2。如果我想从 view1 引用 view2,我必须在 view1 之前声明 view2。

于 2011-09-12T09:10:56.380 回答