Circular dependencies cannot exist in RelativeLayout, android?

对着背影说爱祢 提交于 2019-11-26 08:20:37

问题


I have the following layout: I need to keep the button at the bottom of screen and it should be visible to the user. The rest of the layout should scroll.

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

I just need to do scroll my view and keep the button appeared on the screen at the bottom.

The problem is with

     android:layout_above=\"@+id/bottomLinearLayout\"

I get the error

     Circular dependencies cannot exist in RelativeLayout

What is wrong with my layout?


回答1:


The problem is caused because there is a circular reference in the layout parameters.

For example, when view B is layout_below view A, view A can't reference view B anymore in it's below, alignRight etc. This can also exist between multiple views: A references B references C. In that scenario C can't reference A because of a circular dependency.

You Used :-

bottomLinearLayout is below scrollView1 And then you said that scrollView1 is above bottomLinearLayout

It dosen't work like that. Use one




回答2:


You cannot say the bottomLinearLayout is below scrollView1 then say scrollView1 is above bottomLinearLayout. Only do one, not both.

This is circular because it will try to position itself after it figures out where the other one is at... Which is waiting on the first one.




回答3:


Add android:layout_alignParentTop="true" in your scrollView and delete android:layout_below="@+id/scrollView1" in the bottomLinearLayout.




回答4:


Enclose your scroll view within a Relative Layout.

The structure will be:

<RelativeLayout
......
....
.....>

<RelativeLayout
.....
.....
.....>

<ScrollView
....
...
...>

put your staff here

</ScrollView>
</RelativeLayout>


<RelativeLayout
....
....
below the above relative layout
...../>

<Button
....
....
..../>

</RelativeLayout>

</RelativeLayout>


来源:https://stackoverflow.com/questions/23904281/circular-dependencies-cannot-exist-in-relativelayout-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!