Ci sono due modi per ottenere questo risultato utilizzando ConstraintLayout
: Chains e Guidelines. Per utilizzare le catene, assicurati di utilizzare ConstraintLayout
Beta 3 o versioni successive e, se desideri utilizzare l'editor di layout visivo in Android Studio, assicurati di utilizzare Android Studio 2.3 Beta 1 o versione successiva.
Metodo 1 - Utilizzo Catene
aprire l'editor di layout di e aggiungere i widget come di consueto, aggiungendo vincoli genitore, se necessario. In questo caso, ho aggiunto due pulsanti con i vincoli alla parte inferiore del genitore e parte del genitore (lato sinistro per il pulsante Salva e sul lato destro per pulsante Condividi):

Si noti che in questo stato , se i flip a quello panorama, il punto di vista non riempiono il genitore, ma sono ancorati agli angoli:

Evidenziare entrambi i punti di vista, sia per Ctrl/Cmd clic o trascinando un riquadro intorno i punti di vista:

Quindi fare clic destro sui punti di vista e scegliere "Centro orizzontalmente":

Questo imposta una connessione bidirezionale tra i punti di vista (che è come una catena è definito) . Di default lo stile della catena è "diffuso", che viene applicato anche quando non è incluso alcun attributo XML.Attaccando con lo stile della catena, ma impostando la larghezza del nostro punto di vista per 0dp
lascia il punto di vista riempire lo spazio disponibile, diffondendo in modo uniforme in tutto il genitore:

Questo è più evidente con orientamento orizzontale:

Se si preferisce saltare l'editor di layout, l'XML risultante sarà simile:
<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:
- impostazione la larghezza di ogni elemento per
0dp
o MATCH_CONSTRAINT
lascia il punto di vista riempiono il genitore (opzionale)
- i punti di vista devono essere collegati tra loro in modo bidirezionale (destra di salvare i link del pulsante per pulsante di condivisione, a sinistra di link pulsante di condivisione per salvare il pulsante), ciò avviene automaticamente tramite l'editor di layout quando si sceglie "Centro orizzontalmente"
- la prima vista nella catena può specificare lo stile di catena tramite
layout_constraintHorizontal_chainStyle
, vedere lo documentation per vari stili di catena, se il lo stile della catena è omesso, il valore predefinito è "spread"
- la ponderazione della catena può venire regolata tramite
layout_constraintHorizontal_weight
- questo esempio è per una catena orizzontale, ci sono attributi corrispondenti per catene verticali
Metodo 2 - Utilizzo di un indirizzo
Apri il tuo layout nell'editor e fai clic sul pulsante della linea guida:

quindi selezionare "Aggiungi verticale Guideline": 
apparirà una nuova linea guida, che per default, sarà probabilmente ancorato a sinistra in valori relativi (indicato con sinistra rivolta freccia):

Fare clic sulla freccia rivolta verso sinistra per passare ad un valore percentuale, quindi trascinare la linea guida per la soglia del 50%:

Ora è possibile utilizzare la linea guida come ancoraggio per altre viste. Nel mio esempio, ho attaccato alla destra del pulsante Salva e sinistra del pulsante di condivisione per la linea guida:

Se si desidera il punto di vista per riempire lo spazio disponibile, il vincolo deve essere impostato su "Qualsiasi Size" (le linee ondulate che corre orizzontalmente):

(Questa è la stessa impostazione del layout_width
a 0dp
).
Una linea guida può anche essere creato in XML abbastanza facilmente piuttosto che utilizzare 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" />
non riuscivo a trovare un modo come t o creare una linea guida con un vincolo. Voglio che una linea guida orizzontale si trovi al centro di due viste. Immagina una vista più ampia con un'altezza di 100 dp in alto e una più piccola con un'altezza di 50 dp in basso. Voglio posizionare una linea guida nel mezzo dello spazio tra di loro. – headsvk
Non penso che si possano aggiungere vincoli alla linea guida stessa. È possibile aggiungere più linee guida e quindi limitare le visualizzazioni a tali linee guida. Puoi pubblicare una nuova domanda con i dettagli su ciò che stai cercando di ottenere. Sentiti libero di incollarlo anche qui. – AdamK
Grazie, caro signore. È stato un aiuto tempestivo ed efficace. – iSofia