1
votes

android linearlayout et textview wrap_content provoquent la coupure de la dernière ligne de texte

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>


4 commentaires

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.


3 Réponses :


1
votes

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

 entrez la description de l'image ici


7 commentaires

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



1
votes

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>


2 commentaires

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 :)



0
votes
<?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

2 commentaires

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