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?
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
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.
Ajouter Android:layout_alignParentTop="true"
dans votre scrollView et supprimez Android:layout_below="@+id/scrollView1"
dans le bottomLinearLayout.