Android layout_below无法正常工作

我在我的应用程序中广泛使用RelativeLayouts,并认为我知道如何指定它们,但是这让我无所适从。 我基本上定位4个TextViews两行,每个包含一个标签和将提供的文本。 它应该看起来像这样:

生于1810年8月23日,肯塔基州梅森公司

死亡:1865年7月15日辛辛那提,俄亥俄州汉密尔顿公司

这是布局的相关部分:

<TextView android:id="@+id/birth_lbl" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/given_layout" android:layout_alignLeft="@+id/given_layout" android:layout_marginTop="6dip" style="@style/label" android:text="@string/born" /> <TextView android:id="@+id/birth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/birth_lbl" android:layout_alignBaseline="@+id/birth_lbl" android:layout_marginLeft="10dip" android:layout_marginRight="6dip" style="@style/main_text" android:text="dd Mmm yy" /> <TextView android:id="@+id/death_lbl" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/birth" android:layout_alignLeft="@+id/birth_lbl" android:layout_marginTop="4dip" style="@style/label" android:text="@string/died" /> <TextView android:id="@+id/death" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/death_lbl" android:layout_alignLeft="@+id/birth" android:layout_alignBaseline="@+id/death_lbl" android:layout_marginRight="6dip" style="@style/main_text" android:text="dd Mmm yy" /> 

出于某种原因,这显示死亡线意见上述生产线的意见! 如果我将death_lbl视图的规范更改为“layout_below =”@ + id / birth_lbl“”,则这些行的位置正确! 但是,“出生”视图可能包含多行,所以我真的需要将第二行定位在“出生”之下,而不是“birth_lbl”。

任何人都知道这种行为的原因? 它在Eclipse中的graphics布局编辑器中以及运行Android 4.0的平板电脑上都会出现。

Solutions Collecting From Web of "Android layout_below无法正常工作"

尝试将android:layout_below="@+id/birth" death_lblandroid:layout_below="@id/birth" ,因为此时已经声明了,这意味着它会再次声明时导致问题。

如果修正你的+符号没有帮助,你可以将id/death定位在id/birth ,然后把id/death id/death_label置于左侧id/death

实际上,我可以通过编写一个仅包含这些字段的临时layout来复制这种现象,并且如果我没有将最初的birth_lbl视图相对于它上面的视图(本例中的“given_layout”案件)。

所以我不确定这是否被分类为修复,解决方法或kludge(这些仍然是一个单词?),但我所做的是将文本视图放置在它们自己的RelativeLayout ,并将RelativeLayout相对位置id/given_layout 。 无论如何,它的工作原理…

我也遇到同样的问题,因为我使用约束布局,但align_below只能在相对布局 。 所以请检查您正在使用的布局。

你的问题是你正在调用相对布局的属性,就好像你正在声明一样。

当你为一个视图声明一个ID时,应该像这样android:id="@+id/button" ,当你想让Android在相对布局的上方或下方定位该特定的视图时,你必须调用它像这样android:layout_below="@id/textview"

这告诉android你声明了一个带有idbutton的button,并希望它位于textview下方,请记住不要使用@+id来代替view使用@id