Mit einer Vorschau 1 von Android Studio 2.2 hat Google ein neues Layout in seiner Support-Bibliothek veröffentlicht : ConstraintLayout
. Mit ConstraintLayout ist es einfacher, ein Design-Tool in Android Studio zu verwenden, aber ich habe keine Möglichkeit gefunden, relative Größen (Prozent oder 'Gewichte' wie in LinearLayout) zu verwenden. Gibt es eine Möglichkeit, die Einschränkungen basierend auf Prozenten zu definieren? ZB eine Ansicht 40% eines Bildschirms einnehmen lassen, einen Abstand von 20% zwischen den Ansichten erstellen und die Breite einer Ansicht auf 50% der Breite einer anderen Ansicht festlegen?
android
android-support-library
android-constraintlayout
Yury Fedorov
quelle
quelle
version 1.1
ConstraintLayout hinzugefügt . Siehe "Prozentuale Dimension" unter developer.android.com/reference/android/support/constraint/… oder einige der neueren Antworten.Antworten:
Sie können dies derzeit auf verschiedene Arten tun.
Eine besteht darin, Richtlinien zu erstellen (klicken Sie mit der rechten Maustaste auf den Entwurfsbereich und dann auf vertikale / horizontale Richtlinie hinzufügen). Sie können dann auf die "Kopfzeile" der Richtlinie klicken, um die Positionierung prozentual zu ändern. Schließlich können Sie Ansichten auf Richtlinien beschränken.
Eine andere Möglichkeit besteht darin, eine Ansicht mithilfe von Bias (Prozent) zu positionieren und dann andere Ansichten in dieser Ansicht zu verankern.
Wir haben jedoch darüber nachgedacht, wie prozentuale Dimensionen angeboten werden können. Ich kann kein Versprechen abgeben, aber wir möchten es hinzufügen.
quelle
app:layout_constraintGuide_percentage
Es kann nützlich sein, hier eine Kurzreferenz zu haben.
Platzierung von Ansichten
Verwenden Sie eine Richtlinie mit
app:layout_constraintGuide_percent
wie folgt aus :Und dann können Sie diese Richtlinie als Ankerpunkte für andere Ansichten verwenden.
oder
Verwenden Sie Bias mit
app:layout_constraintHorizontal_bias
und / oderapp:layout_constraintVertical_bias
, um die Ansichtsposition zu ändern, wenn der verfügbare Speicherplatz dies zulässtGröße der Ansichten
Ein weiterer prozentualer Wert ist die Höhe und / oder Breite der Elemente mit
app:layout_constraintHeight_percent
und / oderapp:layout_constraintWidth_percent
:quelle
0dp
wird in ConstraintLayout verwendet, um die dynamische Größe anzuzeigen. Siehe developer.android.com/reference/android/support/constraint/…1dp
nicht0dp
... es ist das, worüber ich spreche0dp
ist bereits reserviert,1dp
scheint also sinnvoll.Ab "ConstraintLayout1.1.0-beta1" können Sie Breiten und Höhen in Prozent definieren.
Dadurch wird die Breite auf 40% der Bildschirmbreite festgelegt. Eine Kombination aus diesem und Richtlinien in Prozent ermöglicht es Ihnen, jedes gewünschte prozentuale Layout zu erstellen.
quelle
version 1.1
ConstraintLayout hinzugefügt . Das zusätzliche_default="percent"
wird bei der stabilen Version nicht mehr benötigt! Siehe "Prozentuale Dimension" auf developer.android.com/reference/android/support/constraint/…sp
Einheiten definiert werden soll, automatisch proportional zur Größe der Ansicht sein (die für sich genommen proportional zur Gesamtgröße des Layouts definiert ist, dh in Prozent)? ?Mit der neuen Version von ConstraintLayout v1.1 können Sie jetzt Folgendes tun:
Dadurch wird die Schaltfläche auf 20% der Höhe und 65% der Breite der übergeordneten Ansicht beschränkt.
quelle
sp
Einheiten definiert werden soll, automatisch proportional zur Größe der Ansicht sein (die für sich genommen proportional zur Gesamtgröße des Layouts definiert ist, dh in Prozent)? ?Verwendung von Richtlinien
Die akzeptierte Antwort ist etwas unklar, wie Richtlinien verwendet werden sollen und wie der "Header" lautet.
Schritte
Fügen Sie zuerst eine Richtlinie hinzu.
Wählen Sie die Richtlinie aus oder verschieben Sie sie ein wenig, um die Einschränkungen sichtbar zu machen.
Klicken Sie dann auf den runden Kreis (die "Überschrift"), bis er zu einem Prozent wird. Sie können diesen Prozentsatz dann auf 50% oder was auch immer Sie möchten ziehen.
Danach können Sie Ihre Ansicht auf die Richtlinie beschränken, um einen bestimmten Prozentsatz des übergeordneten Elements (mithilfe
match_constraint
der Ansicht) festzulegen.quelle
Die Richtlinie ist von unschätzbarem Wert - und die App: layout_constraintGuide_percent ist ein guter Freund ... Manchmal möchten wir jedoch Prozentsätze ohne Richtlinien. Jetzt ist es möglich, Gewichte zu verwenden :
Hier ist ein vollständigeres Beispiel, das eine Richtlinie mit zusätzlichen Gewichten verwendet :
quelle
Mit dem ConstraintLayout v1.1.2 sollte die Dimension auf
0dp
und dann die Attributelayout_constraintWidth_percent
oderlayout_constraintHeight_percent
auf einen Wert zwischen 0 und 1 gesetzt werden, wie:(Sie müssen ConstraintLayout 1.1.2 und die folgenden Versionen nicht festlegen
app:layout_constraintWidth_default="percent"
oder verwenden.app:layout_constraintHeight_default="percent"
)quelle
Das Einschränken von Layout 1.0, mit dem eine Ansicht erstellt wird, nimmt einen Prozentsatz des Bildschirms ein, für den zwei Richtlinien erforderlich sind. In Constraint Layout 1.1 wurde dies vereinfacht, da Sie jede Ansicht einfach auf eine prozentuale Breite oder Höhe beschränken können.
Ist das nicht fantastisch? Alle Ansichten unterstützen die Attribute layout_constraintWidth_percent und layout_constraintHeight_percent. Dadurch wird die Einschränkung auf einen Prozentsatz des verfügbaren Speicherplatzes festgelegt. Das Erweitern einer Schaltfläche oder einer Textansicht, um einen Prozent des Bildschirms auszufüllen, kann mit wenigen XML-Zeilen erfolgen.
Wenn Sie beispielsweise die Breite der Schaltfläche auf 70% des Bildschirms einstellen möchten, können Sie dies folgendermaßen tun:
Bitte beachten Sie, dass Sie die Dimension als Prozentsatz für 0dp verwenden müssen, wie wir oben angegeben haben: layout_width bis 0dp.
Wenn Sie die Höhe der Schaltfläche auf 20% des Bildschirms einstellen möchten, können Sie dies folgendermaßen tun:
Sehen! Wir haben diesmal android: layout_height auf 0dp angegeben, da die Schaltfläche die Höhe als Prozentsatz verwenden soll.
quelle
Versuchen Sie diesen Code. Sie können die Prozentsätze für Höhe und Breite mit app: layout_constraintHeight_percent und app: layout_constraintWidth_percent ändern.
Gradle:
quelle
Sie können
app:layout_constraintVertical_weight
es genauso verwenden wielayout_weight
inlinearlayout
HINWEIS:
app:layout_constraintVertical_weight
(app:layout_constraintHorizontal_weight
) funktioniert mitandroid:layout_width="0dp"
(android:layout_height="0dp"
quelle
Für jemanden, der nützlich sein könnte, können Sie
layout_constraintDimensionRatio
im jede untergeordnete Ansicht in einem verwendenConstraintLayout
und wir können die Höhe oder Breite als Verhältnis der anderen Dimension definieren (mindestens eine muss 0 dp sein, entweder Breite oder Höhe)In diesem Fall beträgt das Seitenverhältnis 16: 9.
app:layout_constraintDimensionRatio="16:9"
Weitere Informationen finden Sie HIERquelle
Ich weiß, dass dies nicht direkt das ist, wonach OP ursprünglich gefragt hat, aber dies hat mir in dieser Situation sehr geholfen, als ich eine ähnliche Frage hatte. Hinzufügen für Leute, die die Größe des Layoutfensters (das ich regelmäßig verwende) über Code ändern möchten . Fügen Sie dies Ihrem onCreate in der Aktivität der Frage hinzu. (Ändert es auf 80%)
quelle
Einfach durch Ersetzen in Ihrem Richtlinien-Tag ersetzen
mit
wobei 0,7 70% bedeutet.
Auch wenn Sie jetzt versuchen, Richtlinien zu ziehen, wird der gezogene Wert jetzt in% Alter angezeigt.
quelle
Mithilfe von Richtlinien können Sie die Positionierung prozentual ändern
Sie können diesen Weg auch verwenden
quelle