Est-il possible d'attribuer une largeur de widget à la moitié de la largeur d'écran disponible, et de le faire à l'aide de XML déclaratif?
Si votre widget est un bouton:
<LinearLayout Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:weightSum="2"
Android:orientation="horizontal">
<Button Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="somebutton"/>
<TextView Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"/>
</LinearLayout>
Je suppose que vous voulez que votre widget occupe une moitié et un autre pour l'autre moitié. L'astuce consiste à utiliser LinearLayout, en définissant layout_width="fill_parent"
sur les deux widgets et la définition de layout_weight
à la même valeur sur les deux widgets également. S'il existe deux widgets de même poids, le LinearLayout divisera la largeur entre les deux widgets.
Si vous rencontrez des difficultés pour le convertir en pourcentage, reportez-vous à cette réponse .
<?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"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="81dp">
<Android.support.constraint.Guideline
Android:id="@+id/guideline8"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
<TextView
Android:id="@+id/textView6"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_marginBottom="8dp"
Android:layout_marginEnd="8dp"
Android:layout_marginStart="8dp"
Android:layout_marginTop="8dp"
Android:text="TextView"
app:layout_constraintBottom_toTopOf="@+id/guideline8"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</Android.support.constraint.ConstraintLayout>
donnez une largeur égale à 0dp pour vous assurer que sa taille correspond exactement à son poids. Ainsi, même si le contenu des vues enfant grandit, il sera toujours limité à la moitié (selon son poids).
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:weightSum="1"
>
<Button
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:text="click me"
Android:layout_weight="0.5"/>
<TextView
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:text="Hello World"
Android:layout_weight="0.5"/>
</LinearLayout>
Une autre manière pour un article au centre, qui remplit la moitié de l’écran:
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal">
<View
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_weight="1"
Android:visibility="invisible" />
<EditText
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="2" />
<View
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_weight="1"
Android:visibility="invisible" />
</LinearLayout>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<TextView
Android:id="@+id/textD_Author"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="20dp"
Android:text="Author : "
Android:textColor="#0404B4"
Android:textSize="20sp" />
<TextView
Android:id="@+id/textD_Tag"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="20dp"
Android:text="Edition : "
Android:textColor="#0404B4"
Android:textSize="20sp" />
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="horizontal"
Android:weightSum="1" >
<Button
Android:id="@+id/btbEdit"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="0.5"
Android:text="Edit" />
<Button
Android:id="@+id/btnDelete"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="0.5"
Android:text="Delete" />
</LinearLayout>
</LinearLayout>