Esistono due modi per ottenere ciò utilizzando ConstraintLayout
: Catene e Linee guida . Per utilizzare le catene, assicurati di utilizzare ConstraintLayout
Beta 3 o versioni successive e se desideri utilizzare l'editor del layout visivo in Android Studio, assicurati di utilizzare Android Studio 2.3 Beta 1 o versioni successive.
Metodo 1 - Utilizzo delle catene
Apri l'editor di layout e aggiungi i tuoi widget normalmente, aggiungendo i vincoli principali secondo necessità. In questo caso, ho aggiunto due pulsanti con vincoli nella parte inferiore del genitore e lato del genitore (lato sinistro per il pulsante Salva e lato destro per il pulsante Condividi):
Si noti che in questo stato, se si passa alla vista orizzontale, le viste non riempiono il genitore ma sono ancorate agli angoli:
Evidenzia entrambe le viste, facendo clic Ctrl / Cmd o trascinando una casella attorno alle viste:
Quindi fare clic con il tasto destro del mouse sulle viste e selezionare "Centra orizzontalmente":
Ciò imposta una connessione bidirezionale tra le viste (che è come viene definita una catena). Per impostazione predefinita, lo stile della catena è "spread", che viene applicato anche quando non è incluso alcun attributo XML. Attenersi a questo stile di catena ma impostando la larghezza delle nostre viste per 0dp
consentire alle viste di riempire lo spazio disponibile, diffondendo uniformemente tra i genitori:
Ciò è più evidente nella vista orizzontale:
Se si preferisce saltare l'editor di layout, l'XML risultante sarà simile a:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_save_text"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="4dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/button_share"
app:layout_constraintHorizontal_chainStyle="spread" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_share_text"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintLeft_toRightOf="@+id/button_save"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
Dettagli:
- impostare la larghezza di ciascun elemento su
0dp
o MATCH_CONSTRAINT
consentire alle viste di riempire il genitore (facoltativo)
- le viste devono essere collegate in modo bidirezionale (a destra dei collegamenti dei pulsanti di salvataggio per condividere il pulsante, a sinistra dei collegamenti dei pulsanti di condivisione per salvare il pulsante), ciò avverrà automaticamente tramite l'editor di layout quando si sceglie "Centra orizzontalmente"
- la prima vista nella catena può specificare lo stile della catena tramite
layout_constraintHorizontal_chainStyle
, consultare la documentazione per vari stili di catena, se lo stile di catena viene omesso, il valore predefinito è "spread"
- la ponderazione della catena può essere regolata tramite
layout_constraintHorizontal_weight
- questo esempio è per una catena orizzontale, ci sono attributi corrispondenti per catene verticali
Metodo 2 - Utilizzo di una linea guida
Apri il layout nell'editor e fai clic sul pulsante Linee guida:
Quindi selezionare "Aggiungi linea guida verticale":
Apparirà una nuova linea guida, che per impostazione predefinita sarà probabilmente ancorata a sinistra in valori relativi (indicata dalla freccia rivolta a sinistra):
Fai clic sulla freccia rivolta a sinistra per passare a un valore percentuale, quindi trascina la linea guida sul segno del 50%:
La linea guida può ora essere utilizzata come ancoraggio per altre viste. Nel mio esempio, ho collegato la linea guida del pulsante Salva e la parte sinistra del pulsante Condividi alla linea guida:
Se si desidera che le viste riempiano lo spazio disponibile, il vincolo deve essere impostato su "Qualsiasi dimensione" (le linee ondulate che corrono orizzontalmente):
(È uguale all'impostazione di layout_width
a 0dp
).
Una linea guida può anche essere creata in XML abbastanza facilmente piuttosto che usare l'editor di layout:
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />