循环布局依赖项

时间:2015-04-21 08:29:00

标签: android xml android-studio

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="roteiro.pap.pedro.roteiro.Filtros"
android:background="@drawable/fundo_ceu"
android:id="@+id/fundo">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Dormir"
    android:id="@+id/btnDormir"
    android:layout_centerVertical="true"
    android:onClick="btnDormironClick"
    android:layout_alignLeft="@+id/btnNatureza"
    android:layout_alignStart="@+id/btnNatureza"
    android:layout_alignRight="@+id/btnNatureza" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Info"
    android:id="@+id/btnInfo"
    android:onClick="btnInfoonClick"
    android:layout_above="@+id/btnDormir"
    android:layout_alignRight="@+id/btnNatureza"
    android:layout_alignLeft="@+id/btnNatureza"
    android:layout_alignStart="@+id/btnNatureza" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Comer"
    android:id="@+id/btnComer"
    android:onClick="btnComeronClick"
    android:layout_below="@+id/btnDormir"
    android:layout_alignRight="@+id/btnDormir"
    android:layout_alignEnd="@+id/btnDormir"
    android:layout_alignLeft="@+id/btnNatureza"
    android:layout_alignStart="@+id/btnNatureza" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Bares"
    android:id="@+id/btnBar"
    android:onClick="btnBaronClick"
    android:layout_below="@+id/btnComer"
    android:layout_alignRight="@+id/btnComer"
    android:layout_alignEnd="@+id/btnComer"
    android:layout_alignLeft="@+id/btnNatureza"
    android:layout_alignStart="@+id/btnNatureza" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView2"
    android:layout_toEndOf="@+id/imageView11"
    android:src="@drawable/monumentos"
    android:layout_toRightOf="@+id/imageView11" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView3"
    android:layout_alignBottom="@+id/btnInfo"
    android:layout_toRightOf="@+id/btnInfo"
    android:layout_toEndOf="@+id/btnInfo"
    android:src="@drawable/info" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView4"
    android:layout_above="@+id/btnComer"
    android:layout_toRightOf="@+id/btnDormir"
    android:layout_toEndOf="@+id/btnDormir"
    android:src="@drawable/dormir" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Compras"
    android:id="@+id/btnCompras"
    android:onClick="btnComprasonClick"
    android:layout_below="@+id/btnBar"
    android:layout_alignRight="@+id/btnBar"
    android:layout_alignEnd="@+id/btnBar"
    android:layout_alignLeft="@+id/btnNatureza"
    android:layout_alignStart="@+id/btnNatureza" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView5"
    android:layout_above="@+id/btnBar"
    android:layout_toRightOf="@+id/btnComer"
    android:layout_toEndOf="@id/btnComer"
    android:src="@drawable/comer" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView6"
    android:layout_above="@+id/btnCompras"
    android:layout_toRightOf="@+id/btnBar"
    android:layout_toEndOf="@id/btnBar"
    android:src="@drawable/bar" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView7"
    android:layout_alignBottom="@+id/btnCompras"
    android:layout_toRightOf="@+id/btnCompras"
    android:layout_toEndOf="@+id/btnBar"
    android:src="@drawable/compras" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Natureza"
    android:id="@+id/btnNatureza"
    android:onClick="btnPassearonClick"
    android:layout_above="@+id/imageView2"
    android:layout_marginBottom="10dp"
    android:layout_toLeftOf="@+id/imageView11"
    android:layout_toStartOf="@+id/imageView11" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView11"
    android:layout_toEndOf="@+id/btnNatureza"
    android:src="@drawable/passear"
    android:layout_alignBottom="@+id/btnNatureza"
    android:layout_toRightOf="@+id/btnNatureza" />

我的布局上有循环依赖项错误,我试图找到任何循环依赖但却无法找到它,任何看到的人?

java.lang.IllegalStateException:RelativeLayout

中不存在循环依赖关系

3 个答案:

答案 0 :(得分:1)

错误在于以下组件

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Natureza"
    android:id="@+id/btnNatureza"
    android:onClick="btnPassearonClick"
    android:layout_above="@+id/imageView2"
    android:layout_marginBottom="10dp"
    android:layout_toLeftOf="@+id/imageView11"
    android:layout_toStartOf="@+id/imageView11" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView11"
    android:layout_toEndOf="@+id/btnNatureza"
    android:src="@drawable/passear"
    android:layout_alignBottom="@+id/btnNatureza"
    android:layout_toRightOf="@+id/btnNatureza" />

您指定btnNatureza必须位于imageView11的右侧,但是您告诉imageView11它必须位于btnNatureza的左侧。这是一个循环依赖,因为任何一个视图都没有引用的起始点,它们相互依赖来确定它们的位置。要解决此问题,您必须从android:layout_toLeftOf="@+id/imageView11"移除Button或从android:layout_toRightOf="@+id/btnNatureza"移除ImageView

答案 1 :(得分:0)

btnNatureza是指imageView2,其引用的imageView11引用btnNatureza

一般来说,你不能说A位于B的底部而B位于A之上。只需保留一个。

<Button
    android:id="@+id/btnNatureza"
    android:layout_above="@+id/imageView2"
    android:layout_toLeftOf="@+id/imageView11"
    android:layout_toStartOf="@+id/imageView11" />

<ImageView
    android:id="@+id/imageView11"
    android:layout_toEndOf="@+id/btnNatureza"
    android:layout_alignBottom="@+id/btnNatureza"
    android:layout_toRightOf="@+id/btnNatureza" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_toEndOf="@+id/imageView11"
    android:layout_toRightOf="@+id/imageView11" />

答案 2 :(得分:0)

这两个视图相互引用

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Natureza"
android:id="@+id/btnNatureza"
android:onClick="btnPassearonClick"
android:layout_above="@+id/imageView2"
android:layout_marginBottom="10dp"
android:layout_toLeftOf="@+id/imageView11"
android:layout_toStartOf="@+id/imageView11" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView11"
android:layout_toEndOf="@+id/btnNatureza"
android:src="@drawable/passear"
android:layout_alignBottom="@+id/btnNatureza"
android:layout_toRightOf="@+id/btnNatureza" />