J'ai utilisé constraintLayout et layout_constraintDimensionRatio = "1: 1" (la largeur est warp_content, la hauteur est 0dp (match_constraint))
En conséquence, je m'attendais à ce que la largeur et la hauteur soient de 1: 1 mais ne fonctionnent pas.
qu'est-ce qui ne va pas??
J'ai joint le code et la capture d'écran.
<?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"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:id="@+id/t1"
Android:layout_width="wrap_content"
Android:layout_height="0dp"
Android:background="@Android:color/holo_blue_bright"
Android:gravity="center"
Android:text="Hello World!11"
app:layout_constraintDimensionRatio="1:1" />
</Android.support.constraint.ConstraintLayout>
Je cite Android sur Constraintlayout. https://developer.Android.com/reference/Android/support/constraint/ConstraintLayout.html#DimensionConstraints
"Ratio :: Vous pouvez également définir une dimension d'un widget en tant que ratio de l'autre. Pour ce faire, vous devez avoir au moins une dimension contrainte définie sur 0dp (c'est-à-dire MATCH_CONSTRAINT) et définir l'attribut layout_constraintDimentionRatio à un rapport donné. Par exemple:
<Button Android:layout_width="wrap_content"
Android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1" />
définira la hauteur du bouton comme étant sa largeur. "
-> mais je ne travaillais pas.
Vous oubliez d'ajouter vos contraintes
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:id="@+id/t1"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
Android:background="@Android:color/holo_blue_bright"
Android:gravity="center"
Android:text="Hello World!11"
app:layout_constraintDimensionRatio="1" />
</Android.support.constraint.ConstraintLayout>
0dp est uniquement appliqué aux vues enfants de ConstraintLayout. Toute vue doit appliquer les règles d'attribut de son parent.
Depuis la version 1.1.0, cela a changé.
Vous pouvez maintenant définir:
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintDimensionRatio="H,1:1"
Consultez le lien ci-dessous pour trouver toute la documentation concernant DimensionConstraints:
Dans mon cas, j'ai un problème comme je dois remplir ma mise en page à l'intérieur du conteneur avec un rapport de papier de format A4.
Problème
Je reçois des pages de curriculum vitae au format A4 en tant qu'images du backend, je dois donc ajouter ces images dans Viewpager dans lequel j'utilise ImageView pour afficher ces images.
Solution
J'ai parcouru Disposition de contrainte document dans lequel la section Ratio
est là. Je peux donc utiliser layout_constraintDimensionRatio
pour résoudre mon problème.
Donc, mon xml qui est utilisé pour afficher la mise en page entière suit, dans mon cas, j'ai utilisé app:layout_constraintDimensionRatio="1:1.27"
comme avec: rapport hauteur, mais le rapport réel est app:layout_constraintDimensionRatio="1:1.41"
<?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:background="@color/orange">
<!-- divider line which i used as restricting my A4 size container height-->
<View
Android:id="@+id/divider"
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:background="@color/headline_title_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias=".85"/>
<!-- A4 size Image View-->
<ImageView
Android:id="@+id/resumeContainer"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_marginLeft="12dp"
Android:layout_marginTop="16dp"
Android:layout_marginRight="12dp"
Android:layout_marginBottom="16dp"
Android:background="@color/green"
Android:text="@string/change"
Android:src="@drawable/banner"
app:layout_constraintBottom_toTopOf="@id/divider"
app:layout_constraintDimensionRatio="1:1.27"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<!-- for Bottom two buttons -->
<com.bold.job.utils.CustomButton
Android:id="@+id/preview"
style="@style/tertiaryButtonStyle"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_margin="16dp"
Android:onClick="preview"
Android:text="@string/preview_resume"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/guideline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider"
/>
<Android.support.constraint.Guideline
Android:id="@+id/guideline"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<com.bold.job.utils.CustomButton
Android:id="@+id/preview2"
style="@style/tertiaryButtonStyle"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_margin="16dp"
Android:onClick="preview"
app:layout_constraintLeft_toRightOf="@id/guideline"
app:layout_constraintRight_toRightOf="parent"
Android:text="@string/preview_resume"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider"
/>
</Android.support.constraint.ConstraintLayout>