web-dev-qa-db-fra.com

Attribuer la largeur à la moitié de la largeur d'écran disponible de manière déclarative

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?

101
bugzy

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.

258
synic

Utiliser la mise en page des contraintes

  1. Ajouter une ligne directrice
  2. Définir le pourcentage à 50%
  3. Limitez votre vue à la ligne directrice et au parent.

enter image description here

Si vous rencontrez des difficultés pour le convertir en pourcentage, reportez-vous à cette réponse .

XML

<?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>
32
Suragch

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>
15
Rajesh Batth

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>
4
Denys_Sh
<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>
1
Shahzad Shameer