Вопрос по android, layout – Ошибка круговых зависимостей Android Relative Layout
Я пытаюсь создать пользовательский макет, но я изо всех сил пытаюсь заставить его работать должным образом. Я получаю сообщение об ошибке ". Циркулярные зависимости не могут существовать в Относительном макете".
Вот что я пытаюсь достичь в терминах макета, а затем заполняю каждое текстовое поле данными.
date number
name score - score name
scorers scorers
вот моя попытка
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingTop="30dp"
android:paddingBottom="30dp" >
<TextView
android:id="@+id/TextView04"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_below="@+id/HomeScore"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="-"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
<TextView
android:id="@+id/AwayTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/TextView04"
android:layout_alignBottom="@+id/TextView04"
android:layout_alignParentRight="true"
android:layout_marginRight="22dp"
android:gravity="left"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
<TextView
android:id="@+id/HomeTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/TextView04"
android:layout_alignBottom="@+id/TextView04"
android:layout_toRightOf="@+id/HomeScore"
android:gravity="right"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
<TextView
android:id="@+id/Attendance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/AwayTeam"
android:layout_alignTop="@+id/HomeScore"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/Division"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView1"
android:layout_toRightOf="@+id/HomeScore"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/AwayScore"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/TextView04"
android:layout_alignBottom="@+id/TextView04"
android:layout_toRightOf="@+id/TextView04"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
<TextView
android:id="@+id/HomeScore"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/TextView04"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@+id/TextView04"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
</RelativeLayout>
вот ошибка
06-06 14:42:44.348: E/AndroidRuntime(1167): java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.RelativeLayout$DependencyGraph.getSortedViews(RelativeLayout.java:1272)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.RelativeLayout.sortChildren(RelativeLayout.java:281)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:303)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.view.View.measure(View.java:8526)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.ListView.measureScrapChild(ListView.java:1153)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.ListView.measureHeightOfChildren(ListView.java:1266)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.ListView.onMeasure(ListView.java:1127)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.view.View.measure(View.java:8526)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3224)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.TableLayout.measureChildBeforeLayout(TableLayout.java:456)
06-06 14:42:44.348: E/AndroidRuntime(1167): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
TextView04
declares android:layout_below="@+id/HomeScore"
and android:layout_centerVertical="true"
, which conflict
AwayTeam
declares android:layout_alignBaseline="@+id/TextView04"
and android:layout_alignBottom="@+id/TextView04"
, which conflict
HomeTeam
declares android:layout_alignBaseline="@+id/TextView04"
and android:layout_alignBottom="@+id/TextView04"
, which conflict
AwayScore
declares android:layout_alignBaseline="@+id/TextView04"
and android:layout_alignBottom="@+id/TextView04"
, which conflict
Как указывает Самир, по крайней мере одна из ваших круговых зависимостей находится междуTextView04
а такжеHomeScore
. TextView04
говорит, что это должно быть нижеHomeScore
, а такжеHomeScore
говорит, что его дно совмещено с дномTextView04
, Однако некоторые другие, которые я отмечаю выше, также могут создавать циклические зависимости. Убедитесь, что два виджета не пытаются ограничивать друг друга на одной оси (как вTextView04
а такжеHomeScore
).
android:layout_below="@+id/HomeScore"
с первогоTextView
в вашем макете это создает круговые зависимости.
Why ?
Потому что вы установилиandroid:layout_alignBottom="@+id/TextView04"
в Textview, чей идентификатор
android:id="@+id/HomeScore"
.и первый Textview (TextView04) также имеютandroid:layout_below="@+id/HomeScore"
.
<TextView
android:id="@+id/TextView04"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="-"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/blue"
android:textStyle="bold" />
Когда вы ссылаетесь на другой идентификатор, не используйте@+id/...
просто@id/...
, Так что везде, кромеandroid:id
приписать+
должен быть удален.
После этого вы можете получить некоторые предупреждения, указывающие на возможную ошибку!
+
даже если это произойдет доandroid:id
, Например, см .:github.com/commonsguy/cw-omnibus/blob/master/Containers/…
RelativeLayout
поддерживает подобные ссылки в течение почти трех лет:android-developers.blogspot.com/2009/10/…