Android
ConstraintLayout
Ricerca…
introduzione
ConstraintLayout
è un ViewGroup
che consente di posizionare e dimensionare i widget in modo flessibile. È compatibile con Android 2.3 (livello API 9) e versioni successive.
Permette di creare layout grandi e complessi con una gerarchia di viste piatte. È simile a RelativeLayout
in quanto tutte le visualizzazioni sono disposte in base alle relazioni tra le viste di pari livello e il layout principale, ma è più flessibile di RelativeLayout
e più facile da utilizzare con l'Editor di layout di Android Studio.
Sintassi
ConstraintLayout
public void addView (Visualizza child, int index, ViewGroup.LayoutParams params)
ConstraintLayout pubblico.LayoutParams generaLayoutParams (AttributeSet attrs)
public void onViewAdded (Visualizza vista)
public void onViewRemoved (Visualizza visualizzazione)
public void removeView (Visualizza visualizzazione)
public void requestLayout ()
protetto booleano checkLayoutParams (Parametri ViewGroup.LayoutParams)
protetto ConstraintLayout.LayoutParams generateDefaultLayoutParams ()
ViewGroup.LayoutParams protetti generateLayoutParams (Parametri ViewGroup.LayoutParams)
protected void onLayout (booleano modificato, int left, int top, int right, int bottom)
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
ConstraintLayout.LayoutParams
public void resolveLayoutDirection (int layoutDirection)
public void validate ()
protected void setBaseAttributes (TypedArray a, int widthAttr, int heightAttr)
Parametri
Parametro | Dettagli |
---|---|
bambino | La View da aggiungere al layout |
indice | L'indice della View nella gerarchia del layout |
params | Il LayoutParams della View |
attrs | L' AttributeSet che definisce il LayoutParams |
vista | La View che è stata aggiunta o rimossa |
cambiato | Indica se questa View ha cambiato dimensione o posizione |
sinistra | La posizione sinistra, relativa alla View genitore |
superiore | La posizione superiore, relativa alla View genitore |
destra | La posizione corretta, relativa alla View genitore |
parte inferiore | La posizione in basso, relativa alla View genitore |
widthMeasureSpec | I requisiti di spazio orizzontale imposti dalla View principale |
heightMeasureSpec | I requisiti di spazio verticale imposti dalla View padre |
layoutDirection | - |
un | - |
widthAttr | - |
heightAttr | - |
Osservazioni
A Google IO 2016 Google ha annunciato un nuovo layout Android denominato ConstraintLayout.
Fai attenzione perché al momento questo layout è una versione beta .
Più informazioni sul layout dei vincoli:
https://codelabs.developers.google.com/codelabs/constraint-layout/index.html
Aggiunta di ConstraintLayout al progetto
Per lavorare con ConstraintLayout, è necessario Android Studio versione 2.2 o successiva e avere almeno la versione 32 (o successiva) del repository di supporto Android.
- Aggiungi la libreria Constraint Layout come dipendenza nel tuo file
build.gradle
:
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
- Sincronizza progetto
Per aggiungere un nuovo layout di vincoli al tuo progetto:
- Fare clic con il tasto destro sulla directory di layout del modulo, quindi fare clic su
New > XML > Layout XML.
- Inserisci un nome per il layout e inserisci
"android.support.constraint.ConstraintLayout"
per il tag di root. - Fai clic su Fine .
Altrimenti aggiungi semplicemente un file di layout:
<?xml version="1.0" encoding="utf-8"?>
<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">
</android.support.constraint.ConstraintLayout>
Catene
Poiché ConstraintLayout
alpha 9, le catene sono disponibili. Una Catena è un insieme di viste all'interno di un ConstraintLayout
che sono collegate in modo bidirezionale tra loro, cioè A collegato a B con un vincolo e B collegato ad A con un altro vincolo.
Esempio:
<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">
<!-- this view is linked to the bottomTextView -->
<TextView
android:id="@+id/topTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/bottomTextView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainPacked="true"/>
<!-- this view is linked to the topTextView at the same time -->
<TextView
android:id="@+id/bottomTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom\nMkay"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topTextView"/>
</android.support.constraint.ConstraintLayout>
In questo esempio, le due viste sono posizionate una sotto l'altra ed entrambe sono centrate verticalmente. È possibile modificare la posizione verticale di queste viste regolando il bias della catena. Aggiungi il seguente codice al primo elemento di una catena:
app:layout_constraintVertical_bias="0.2"
In una catena verticale, il primo elemento è la vista più in alto, e in una catena orizzontale è la vista più a sinistra. Il primo elemento definisce il comportamento dell'intera catena.
Le catene sono una nuova funzionalità e vengono aggiornate frequentemente. Ecco una documentazione ufficiale Android su Chains.