Comment puis-je inverser le sens d'un linéaire de mise en page?
par exemple, si ma mise en page est [vue1, vue2, vue3] je veux créer [vue3, vue2, vue1]. Mon but est de gonfler un à gauche et un à droite, a remis des instances à partir d'un XML de mise en page.
OriginalL'auteur ZeroEric | 2012-12-16
En général, je dirais que vous ne pouvez pas faire cela en utilisant le SDK standard. Vous pouvez toutefois créer une méthode qui obtient tous les sous-vues de la LinearLayout, supprime de la LinearLayout, et ajoute ensuite les remettre dans l'ordre inverse.
Une petite correction, j'ai changé le "<=" dans la deuxième boucle for pour ">=". Il a parfaitement fonctionné! Merci.
bonne prise. fixe.
OriginalL'auteur mtmurdock
Vous pouvez contrôler la direction de la mise en page directement par le biais de la layoutDirection. Dans ce code, nous détecter si la direction naturelle est RTL, et inverser le sens, évidemment, on peut appliquer votre propre logique de l'inversion:
Ou via XML dans le cas où vous souhaitez remplacer la direction naturels constamment:
De détection de RTL est prise à partir de cette question: Identifyng RTL langue dans Android
OriginalL'auteur ohad serfaty
c'est l'approche la plus simple 🙂
OriginalL'auteur mahdi_m
Moyen Simple d'essayer cette
OriginalL'auteur Ali Imran
Maintenant, vous pouvez essayer ce
Ici par Vue , il peut être TextView,Bouton....etc.
dans ce cas, il doit utiliser un if-else selon sa logique.
Si-sinon vous ne pouvez pas modifier le type d'un objet. Ce que vous proposez ne change pas l'ordre, il change juste les données stockées dans chaque vue donnant l'apparence d'une modification de l'ordre.
u n'a pas l'obtenir itwhat je voulais dire.de toute façon, tout dépend du sens de la question.
OriginalL'auteur Android Killer
Qui n'est pas pris en charge, désolé.
Vous êtes les bienvenus pour les gonfler à la fois à partir d'un XML de mise en page, mais vous devrez alors supprimer tous les enfants de l'un et de l'inverse de leur ordre dans le code Java. Peut-être que c'est plus simple que de maintenir les deux fichiers de mise en page, mais ce n'est certainement pas automatique.
Ou, vous êtes invités à créer votre propre sous-classe de
LinearLayout
(ou peut-être le cloneLinearLayout
) qui offre cette fonctionnalité.Android 4.2 et supérieur offre RTL soutien pour
LinearLayout
, mais qui est lié à des paramètres régionaux et s'appliquerait à tous lesLinearLayout
conteneurs dans votre application.OriginalL'auteur CommonsWare
avis pour le prev réponses, si vous souhaitez conserver la largeur/hauteur de vues, calculé par la passe directe (c'est à dire remplir parent/wrap de contenu), vous devez définir explicitement:
peut-être, vous devrez utiliser la poste à vue pour être sûr tailles de vues sont calculés. et ajouter un gestionnaire pour les changements d'orientation de l'avoir des tailles recalculées correctement.
OriginalL'auteur
Vous pouvez essayer
ViewCompat.setLayoutDirection(view, direction)
OriginalL'auteur joecizac
Il suffit d'ajouter le code suivant à
LinearLayout
:Mais définitivement inverse l'ordre - et pas seulement pour RTL de paramètres régionaux 🙁
OriginalL'auteur Dmitry