Auto ajustement en fonction de la taille de l'écran dans la grille de mise en page android
J'ai créé une grille contenant plein de textes. Je veux que le texte à l'auto-ajustement en fonction de la taille de l'écran. J'ai essayé le code suivant,
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
int noOfColumns = (int) (dpWidth / 50);
return noOfColumns;
Je veux quelque chose de sortie de cette
]Deux
Il ne fonctionne pas comme pour mon besoin. S'il vous plaît aider . Merci à l'avance.
Quel est le problème avec ce code?
Je veux ajustement automatique mais ce n'est pas l'exécution de l'auto-ajustement . @Vyacheslav
Vous voulez dire que vous ne pouvez pas calculer la hauteur de la police. Suis-je le droit?
Non, je veux juste que les éléments de la grille pour être ajusté selon la taille de l'écran @Vyacheslav
Voulez-vous dire qu'il devrait y avoir plus de colonnes en écran large, ou même nombre de colonnes, juste qu'ils devraient s'étirer pour remplir l'écran?
Je veux ajustement automatique mais ce n'est pas l'exécution de l'auto-ajustement . @Vyacheslav
Vous voulez dire que vous ne pouvez pas calculer la hauteur de la police. Suis-je le droit?
Non, je veux juste que les éléments de la grille pour être ajusté selon la taille de l'écran @Vyacheslav
Voulez-vous dire qu'il devrait y avoir plus de colonnes en écran large, ou même nombre de colonnes, juste qu'ils devraient s'étirer pour remplir l'écran?
OriginalL'auteur Anusha | 2016-09-11
Vous devez vous connecter pour publier un commentaire.
Voici une implémentation personnalisée de GridLayout qui va faire ce dont vous avez besoin: AutoGridLayout
Il suffit d'ajouter à votre XML fichier de mise en page comme ceci:
À l'aide de
columnWidth
allons essayer de calculer combien de colonnes peut s'adapter et de régler de manière optimale la durée de compter automatiquement. Si ce n'est pas (ou n'a pas de mesure pour une raison quelconque), lacolumnCount
attribut sera utilisé.Espérons que cette aide!
Je ne peux pas trouver R. styleable.AutoGridLayout et R. styleable.AutoGridLayout_columnWidth
OriginalL'auteur km.
Pour gridlayout
programme:
un exemple: https://stackoverflow.com/a/14715333/1979882
pour régler gridview utiliser cette méthode:
mise à jour pour gridlayout xml
Je veux colonne à auto_fit et de ne pas coder en dur la valeur @Vyacheslav
Code mis à jour. Veuillez décrire le problème de manière plus précise. Avec code. @Anusha
Je ne veux pas de spécifier le columCount comme vous l'indiquez mais je veux être comme auto_fit . Comment définir comme Auto_fit dans gridlayout? @Vyacheslav
OriginalL'auteur Vyacheslav
Procédez de la manière suivante;
Utiliser votre code pour calculer le nombre de colonnes dans onCreate ou onCreateView. Gardez à l'esprit que l'espacement entre les colonnes.
Appel setColumnCount sur le GridLayout avec au-dessus de compter
Dans votre xml, ajouter l'attribut
android:layout_columnWeight="1"
à tous les éléments de la GridLayout. Ce sera la cause de l'colonnes à l'étirement de l'API de 21 ans et au-dessus.En pré API 21, vous pouvez soit horizontalement au centre de la GridView lui-même, de sorte qu'il semble décent. Ou mieux encore, calculer préféré columnWidth (gridWidth /columnCount), et de parcourir tous les éléments de la grille (ViewGroup), et de définir leur largeur à columnWidth.
OriginalL'auteur lionscribe
Il serait difficile de faire
GridLayout
faire ce que vous avez besoin de:Même si vous pouvez lire la largeur de l'écran à partir d'un
DisplayMetrics
, cette méthode serait incompatible avec les nouvelles versions d'Android que le soutien de split-screen. Vous avez besoin de la largeur de la vue parent, pas la totalité de l'écran.Même en supposant que l'affichage des métriques vous donne un fiable de la largeur de la fenêtre d'affichage de votre activité, cette logique pause dès que vous mettez la mise en page d'un fragment à côté d'un autre fragment. Il n'est pas judicieux de créer quelque chose de si inflexible.
La largeur de la vue parent n'est pas connu avant la mise en page est terminée. Il n'est pas impossible à utiliser, il suffit délicat.
La simple chose à faire est d'utiliser un
GridView
qui est mieux conçu pour ce but, car il a laautofit
option pour le nombre de colonnes.getMetrics
retourne la taille virtuelle de la division de la fenêtre, de sorte qu'il fonctionne bien. Vous utilisezgetRealMetrics
pour obtenir la taille de plein écran.Merci pour cela et je vais prendre votre parole. Je voudrais encore vous soucier de RemixOS, divers régimes de Samsung et d'autres sociétés de matériel utiliser des peaux, et en général ce qui peut se produire sur certains appareil je n'ai pas tester avec.
En fait je n'ai jamais testé moi-même, je faisais que citer ce que j'ai lu dans le stackoverflow.com/questions/36706365/...
En fait, je veux fonctionnalité de glisser-déposer à l'intérieur de la grille .J'ai essayé d'utiliser l'option ajustement automatique pour l'affichage de la Grille, mais j'ai été faire une erreur. Veuillez vérifier ma question ici stackoverflow.com/questions/39434558/... Donc j'ai essayé la même chose à l'aide de la Grille de Mise en page @lionscribe
J'ai essayé de grille de point de vue, mais a été d'obtenir une autre erreur. Veuillez jeter un oeil à mon erreur ici stackoverflow.com/questions/39434558/... @x-code
OriginalL'auteur x-code