J'ai une mise en page qui est simplifiée comme ceci:
a very long long long long long long long long long long long long long long long long long long long long long long long long long long long text
La valeur de @ string / very_long_text est:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="@string/very_long_text"
android:textSize="24sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="10dp">
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="cancel"
android:textSize="24sp"/>
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="yes"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
3 Réponses :
Essayez avec ci-dessous
Utilisation de ConstraintLayout
<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="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical"> <TextView android:id="@+id/txtMessage" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:text="a very long long long long long long long long long long long long long long long long long long long long long long long long long long long text" android:textSize="24sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/btnCancel" android:layout_width="120dp" android:layout_height="wrap_content" android:padding="3dp" android:text="cancel" android:textSize="24sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/btnYes" app:layout_constraintTop_toTopOf="@+id/btnYes" /> <Button android:id="@+id/btnYes" android:layout_width="120dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:padding="3dp" android:text="yes" android:textSize="24sp" app:layout_constraintEnd_toStartOf="@+id/btnCancel" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtMessage" /> </android.support.constraint.ConstraintLayout>Sortie
La définition d'une largeur fixe est-elle une mauvaise pratique?
Je sais que c'est pourquoi j'ai déjà écrit si vous utilisez LinearLayout dans ma réponse. J'ai déjà une autre solution pour obtenir cela en utilisant ConstraintLayout .
@hasanghaforian: avoir la chance de vérifier la réponse mise à jour? J'ai encore un problème, faites-le moi savoir.
@hasanghaforian: avez-vous vérifié cela?
Oui j'ai vérifié ça. Utiliser ConstraintLayout est un bon point. Mais nous devons encore fixer des marges.
J'ai défini la largeur de TextView comme ceci: android: layout_width = "0dp" . Maintenant, il a produit l'interface utilisateur souhaitée sans avoir besoin de définir une marge pour le parent. Veuillez supprimer la première partie de votre réponse et remplacer width par 0dp dans la deuxième partie. Ce sera donc clair pour les autres.
@hasanghaforian: mis à jour
vous pouvez utiliser marges avec la propriété match_parent pour mise en page parent :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="35dp"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="a very long long long long long long long long long long long long long long long long long long long long long long long long long long long text"
android:textSize="24sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="10dp">
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="cancel"
android:textSize="24sp"/>
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="yes"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
La définition d'une marge fixe entraînera une petite marge sur les tablettes.
@hasanghaforian, vous pouvez concevoir une conception distincte pour les tablettes. Android vous donne la possibilité pour cela :)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="a very long long long long long long long long long long long long long long long long long long long long long long long long long long long text"
android:textSize="24sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="10dp">
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="cancel"
android:textSize="24sp"/>
<Button
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="3dp"
android:text="yes"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
set top linear layout as match parent textview as wrap conten as above
De cette façon, la largeur de la mise en page sera en plein écran et ce n'est pas souhaité.
alors combien de largeur vous voulez cette largeur que vous devez définir
essayez d'utiliser la mise en page relative comme mise en page parente.
S'agit-il d'une boîte de dialogue d'alerte avec vue personnalisée? Sinon, la hauteur du parent est-elle fixe?
quelle sortie attendez-vous ??
@Ranjan J'utilise ceci comme mise en page de l'activité qui doit ressembler à un dialogue.