我试图在相对布局中使用自定义按钮,但是在runtimr上我面临来自相对布局的这个循环依赖性错误,有人可以指导我吗?当我使用线性布局(代码更改后)它工作正常。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:gravity="center_horizontal"
android:orientation="vertical" >
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo2" />
<Button
android:id="@+id/playBtn"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_above="@+id/settingsBtn"
android:layout_below="@id/logo"
android:background="@drawable/button_selector"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:text="Play"
android:textColor="#ffffff" />
<Button
android:id="@id/settingsBtn"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_above="@+id/rulesBtn"
android:layout_below="@id/playBtn"
android:background="@drawable/button_selector"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:text="Settings"
android:textColor="#ffffff" />
<Button
android:id="@id/rulesBtn"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_above="@+id/exitBtn"
android:layout_below="@id/settingsBtn"
android:background="@drawable/button_selector"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:text="Rules"
android:textColor="#ffffff" />
<Button
android:id="@id/exitBtn"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_below="@id/rulesBtn"
android:background="@drawable/button_selector"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:text="Exit"
android:textColor="#ffffff" />
</RelativeLayout>
答案 0 :(得分:2)
由于位于另一个上方的按钮意味着第二个按钮低于第一个按钮,因此您无需同时指定这两个按钮。
卸下:
android:layout_below="@id/playBtn"
也
android:layout_below="@id/settingsBtn"
和
android:layout_below="@id/rulesBtn"
答案 1 :(得分:1)
RelativeLayout
使用上面的内容,toLeftOf,toRightOf。你可以逻辑地说“X是Y的左边; Y是X的右边”。这是有道理的,但它并没有准确地说出一个结束而另一个结束的开始。当您这样做时,解析器不知道如何布置值。所以,你只要说“X离开Y”。然后它将首先布局Y(取其配置的任何空间而不考虑X),并将X放在其左侧。
简短回答:使用layout_above
或layout_below
来定义关系,但不要同时使用两者。