2

I am trying to use custom buttons in a relative layout, but on runtimr I am facing this circular dependency error from relative layout, Can someone guide me on this? When I use Linear Layout (after code alterations) it works fine.

<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>
4

2 回答 2

2

由于在另一个上方的按钮意味着第二个在第一个下方,因此您无需同时指定两者。

消除:

android:layout_below="@id/playBtn"

 android:layout_below="@id/settingsBtn"

android:layout_below="@id/rulesBtn" 
于 2013-02-28T18:31:48.037 回答
1

RelativeLayout使用上面、下面、toLeftOf、toRightOf 之类的东西。你可以从逻辑上说“X 在 Y 的左边;Y 在 X 的右边”。这是有道理的,但它并没有准确说明一个结束和另一个开始的地方。当您这样做时,解析器不知道如何布置这些值。因此,您只需说“X 在 Y 的左侧”。然后它将首先布局 Y(占用配置为占用的任何空间而不考虑 X),并将 X 放在它的左侧。

简短的回答:使用layout_aboveorlayout_below来定义关系,但不要同时使用两者。

于 2013-02-28T18:34:28.443 回答