2017-09-02 6 views
0

je une disposition qui a deux CardView « s et ressemble à ceci:RelativeLayout - ne peut pas faire des vues de la même taille verticale si elles sont alignées horizontalement

enter image description here

Je voulais la bonne carte pour être largeur fixe (90dp) et la gauche pour redimensionner automatiquement et remplir l'espace restant. Je l'ai fait actuellement comme ceci:

<RelativeLayout 
     android:id="@+id/inventory_host_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"> 

     <android.support.v7.widget.CardView 
      android:id="@+id/inventory_last_scanned_wrapper_card" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="20dp" 
      android:layout_marginTop="20dp" 
      android:layout_toLeftOf="@+id/inventory_scanned_infobox_wrapper_card"> 

      ... 

     </android.support.v7.widget.CardView> 

     <android.support.v7.widget.CardView 
      android:id="@+id/inventory_scanned_infobox_wrapper_card" 
      android:layout_width="90dp" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="false" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_centerVertical="false" 
      android:layout_marginRight="20dp" 
      android:layout_marginTop="20dp"> 

      ... 

     </android.support.v7.widget.CardView> 

    </RelativeLayout> 

une gauche peut se développer, donc je voulais aussi la bonne carte d'être toujours la même hauteur que celui de gauche. Habituellement, je fais ce genre d'alignement en réglant les propriétés layout_alignTop et layout_alignBottom sur d'autres propriétés View mais ces propriétés ne sont pas disponibles cette fois, probablement parce que cela créerait une référence circulaire (bien que je ne comprenne pas vraiment comment l'alignement horizontal pourrait affecter verticalement). Que faire? J'ai exploré plusieurs autres options, mais revenons toujours au même point, à l'exception des hauteurs de codage en dur ou de la programmation par programme, ce que bien sûr je veux éviter.

+0

Il semble que ce soit plus facile avec LineraLayout. Avez-vous essayé cela? – algrid

+0

Ou ConstraintLayout :) – barotia

+0

J'ai essayé les deux. 'LinearLayout' me permet d'aligner les deux cartes les unes à côté des autres en définissant des poids, mais je ne peux pas affecter la taille verticale de chaque carte. Je n'ai pas beaucoup d'expérience avec 'ConstraintLayout' mais quand je l'ai fait, je suis arrivé au même problème qu'avec RelativeLayout - il n'autorise pas les références circulaires donc l'alignement de l'un sur l'autre m'empêche automatiquement de le faire en sens inverse. –

Répondre

1

Où et pourquoi obtenez-vous des erreurs de référence circulaires? Réglez simplement

android:layout_alignBottom="@id/inventory_last_scanned_wrapper_card" 

sur la carte sur le côté droit et tout devrait fonctionner.

+0

IDE ne me permet pas de le choisir dans la liste donc je me suis dit qu'il devait faire quelque chose avec une référence circulaire. J'ai également essayé à plusieurs reprises de le mettre directement en XML et il était toujours glitching. Mais maintenant, après vos conseils, je l'ai essayé une fois de plus et ... boom. Cela a fonctionné :) Merci. Je suppose que j'ai raté quelque chose avant. –