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.