web-dev-qa-db-fra.com

Les dépendances circulaires ne peuvent pas exister dans RelativeLayout, android?

J'ai la disposition suivante: je dois garder le bouton en bas de l'écran et il doit être visible pour l'utilisateur. Le reste de la mise en page doit défiler.

    <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:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.vfc.sargroup.SalesOrderActivity$PlaceholderFragment" >

<ScrollView
    Android:id="@+id/scrollView1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_above="@+id/bottomLinearLayout" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical" >

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Select Distributor Name"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <Spinner
            Android:id="@+id/spinner1"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" />

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Payment Collection"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="10" >
        </EditText>

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Product Category"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="10" >

            <requestFocus />
        </EditText>

        <TableLayout
            Android:id="@+id/salesTableLayout"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="20dp"
            Android:layout_marginRight="20dp"
            Android:stretchColumns="*" >
        </TableLayout>

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Total QTY"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="10" >

            <requestFocus />
        </EditText>

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Total Price"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="10" >

            <requestFocus />
        </EditText>

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Remark"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:ems="10" >
        </EditText>
    </LinearLayout>
</ScrollView>

<LinearLayout
    Android:id="@+id/bottomLinearLayout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:layout_below="@+id/scrollView1"
    Android:layout_centerHorizontal="true"
    Android:orientation="vertical" >

    <Button
        Android:id="@+id/button1"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="Submit" />
</LinearLayout>
  </RelativeLayout>

Je dois juste faire défiler ma vue et garder le bouton apparu sur l'écran en bas.

Le problème est avec

     Android:layout_above="@+id/bottomLinearLayout"

Je reçois l'erreur

     Circular dependencies cannot exist in RelativeLayout

Quel est le problème avec ma mise en page?

35
WISHY

Le problème est dû au fait qu'il existe une référence circulaire dans les paramètres de disposition.

Par exemple, lorsque la vue B est la vue layout_below A, la vue A ne peut plus référencer la vue B dans sa position inférieure, alignRight etc. Cela peut également exister entre plusieurs vues: A fait référence à B fait référence à C. Dans ce scénario, C ne peut pas faire référence à A en raison d'une dépendance circulaire.

Vous avez utilisé: -

bottomLinearLayout est en dessous de scrollView1 Et puis vous avez dit que scrollView1 est au-dessus de bottomLinearLayout

Ça ne marche pas comme ça. Utilisez-en un

70
Soumil Deshpande

Vous ne pouvez pas dire que bottomLinearLayout est inférieur à scrollView1, puis dire scrollView1 est supérieur à bottomLinearLayout. Ne faites qu'un, pas les deux.

Ceci est circulaire car il essaiera de se positionner après avoir compris où se trouve l'autre ... qui attend le premier.

6
Mgamerz

Ajouter Android:layout_alignParentTop="true" dans votre scrollView et supprimez Android:layout_below="@+id/scrollView1" dans le bottomLinearLayout.

0
adboco