web-dev-qa-db-ja.com

RelativeLayout、Androidに循環依存関係は存在できませんか?

次のレイアウトがあります:ボタンを画面の下部に保持する必要があり、ユーザーに表示されるはずです。レイアウトの残りの部分はスクロールするはずです。

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

ビューをスクロールして、ボタンを画面の下部に表示したままにするだけです。

問題は

     Android:layout_above="@+id/bottomLinearLayout"

エラーが出る

     Circular dependencies cannot exist in RelativeLayout

レイアウトの何が問題になっていますか?

35
WISHY

この問題は、レイアウトパラメータに循環参照があるために発生します。

たとえば、ビューBがlayout_belowビューAである場合、ビューAは、その下にあるビューB、alignRightなどを参照できなくなります。これは、複数のビュー間に存在することもあります。循環依存のため。

使いました :-

bottomLinearLayoutはscrollView1の下にあります。そして、scrollView1はbottomLinearLayoutの上にあると言いました。

それはそのように機能しません。使用する

70

BottomLinearLayoutがscrollView1の下にあると言ってから、scrollView1がbottomLinearLayoutの上にあると言うことはできません。両方ではなく、1つだけを行います。

これは、他の1つがどこにあるのかを把握した後に自分自身を配置しようとするため、循環的です...最初の1つを待っています。

6
Mgamerz

ScrollViewでAndroid:layout_alignParentTop="true"を追加し、bottomLinearLayoutでAndroid:layout_below="@+id/scrollView1"を削除します。

0
adboco