Il y a deux framaries dans mon activité principale qui sera remplacée par deux fragments pendant le temps d'exécution. J'utilise la mise en page de contrainte pour les aligner.
Un fragment particulier qui occupe une frente d'identité avec ID Crotfragment fort> remplace l'écran entier et ne donne aucun endroit à d'autres framayoutes. Lorsque j'affiche individuellement les fragments avec leurs fragments, la vue est exactement comme prévu. p> p> p> J'ai essayé différent alignements pour eux sans chance. Je veux utiliser la mise en page de contrainte en particulier.
Toute aide est appréciée. Merci. p> p>
6 Réponses :
Essayez ce XML:
<androidx.constraintlayout.widget.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="wrap_content"> <FrameLayout android:id="@+id/allnotesfragment" android:layout_width="395dp" android:layout_height="327dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" app:layout_constraintBottom_toTopOf="@+id/view" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"></FrameLayout> <view android:id="@+id/view" class="android.widget.Button" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:background="@android:color/darker_gray" app:layout_constraintBottom_toTopOf="@id/recentsfragment" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/allnotesfragment" /> <FrameLayout android:id="@+id/recentsfragment" android:layout_width="395dp" android:layout_height="325dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/view"></FrameLayout>
ça ne marche pas aussi. L'autre fragment gonfle l'écran entier
Pouvez-vous envisager d'utiliser une autre mise en page telle que linearlayout, si oui, j'ai un XML pour que vous puissiez essayer.
J'ai ajouté une mise en page linéaire et quand j'essaie d'initialiser le deuxième fragment de l'activité principale, je reçois une erreur "Aucune vue trouvée pour ID .... pour fragment".
D'accord, voici @override protégé Void Oncreate (Bundle SavedInstanCetate) {Super.Oncreate (SavedInstancestate); setContentView (r.layout.activity_main); Recentfragment recentfragment = nouveau recentfragment (); Blankfragment Blankfragment = Nouveaufragment blanc (); fragmentmanager = getupportfragmentManager (); fragmentanager.begintransaction (). Ajouter (r.id.recentsfragment, recentfragment) .com mit (); fragmentanager.begintransaction (). Ajouter (R.Id.Allnotesfragment, Blankfragment) .commez-le (); b>
Essayez cette mise en page linéaire: ajoutez ces trois méthodes à votre classe d'activité: p> et aussi ce code dans l'Oncreate : p>
Cela n'a pas résolu le problème .now La nouvelle erreur apparaît. ** "Aucune vue trouvée pour ID 0X7F070044 (COM.Example.diary: ID / ALLNOTESFRAGMAGEMENT) pour fragmenterfragment" **
OK Essayez d'éditer votre question, puis joignez la capture d'écran de l'erreur ou incluez le code tel qu'il est dans la question car les deux méthodes fonctionnent bien ici, je pense que le problème est ailleurs dans le code.
Vérifiez votre contrainte. Contrainte supérieure et inférieure que vous donnez mal. Essayez ci-dessous. P>
Superbe réponse, tu as mon upvote. Vérifiez ma réponse ci-dessous, je crois que c'est plus simple. De plus, il peut changer la hauteur (sensible à toutes les tailles d'écran) des deux dispositions de trame en quelques secondes. Peut-être que vous pouvez apprendre quelque chose de nouveau forme ma réponse. Et chaque fois que vous apprenez quelque chose de nouveau, vous devenez un meilleur développeur
Il vous suffit de changer vos deux Framelayout comme 0dp code> comme
android: layout_height = "0DP" code>. p>.
Vous pouvez utiliser app: layout_constraintheheight_percent = ". 5" code> pour vos deux
Framelayouts CODE> et obtenez 2 vues qui prennent la moitié de la taille de l'écran sans avoir même besoin d'OYUR
Voir code> dans le XML - comme ceci:
Le problème n'est pas vraiment à cause des mises en page, mais parce que dans l'un des fragments au-dessus, j'ai utilisé des données de liaison de données de manière inappropriée et qui occupait tout l'écran de l'application ne laissant aucun espace pour un autre fragment. Merci p>
Essayez de modifier les deux
Framelayout CODE> Tags aux contraintes correspondant,
Android: Layout_width = "0DP" code> et
android: layout_height = "0DP" code>
Merci pour la réponse mais cela n'a pas résolu le problème.