2012-12-12 2 views
2

En haut de mon application, j'ai un titre qui devrait être affiché au milieu, et un bouton sur la droite. Comme la longueur de textViews est derrière mon contrôle, j'ai parfois mon titre traversant le bouton en raison de la longueur du contenu de celui-ci.redimensionnement automatique du texteVoir avec différents appareils de densité android

Après avoir suivi this, j'ai tendance à résoudre le problème. Mon appareil était HTC désir. Malheureusement, si je vérifie avec Galaxy SIII, ça ne fait pas l'affaire.

Je me demande comment je peux gérer cela en termes de différents appareils avec différentes densités.

Mes contrôles à l'intérieur de la disposition relative

Répondre

0

utiliser juste weightsum dans votre xml et faire la largeur de tous les points de vue en tant que parent de remplissage ..... ce qui rend le redimensionnement automatique de votre textview

+0

comme je ne l'ai pas mentionné d'abord, j'utilise la mise en page relative, qui ne prend pas weightSum. – boburShox

+1

ohhhh .... en fait la disposition la plus flexible dans android est linearlayout ..... si vous pouvez changer que de le convertir en linearlayout –

0

vous pouvez maintenir layouts selon leurs DPI`s répliquent les mêmes données XML dans XHDPI (S3 tombe XHDPI) et le tester répliquent de façon similaire les données XML dans HDPI mais garder à l'esprit les éléments suivants Thing Pixel Ratio de la mise en suivant

dans LDPI son 1: 0,75 dans MDPI son 1: 1 dans HDPI son 1: 1,5 dans XHDPI son 1: 2

1

On peut également vérifier la densité de l'écran de l'appareil par this--

WindowManager wm = (WindowManager) _context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    int screenWidth = display.getWidth(); 
    int screenHeight = display.getHeight(); 

Et peut gérer en conséquence ce qui est de vos applications nécessaires .. Avec ce code ci-dessus

+0

J'ai besoin de la taille de mon textView droit? Mais je ne peux pas obtenir la taille de textView dans la méthode onCreate pour que je travaille selon screenHeight comme vous l'avez mentionné. Il renvoie 0. – boburShox

+0

utilise textView.getMeasuredWidth(); .. il vous donnerait la largeur de la vue du texte et calculerait de manière satisfaisante. – Hulk

+0

Je devrais définir un texte et textSize respectivement à l'intérieur de la méthode _onCreate() _, et si vous utilisez _getMeasuredWidth_ il renvoie 0, je crois – boburShox

0
Display display = ((WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
DisplayMetrics dm = new DisplayMetrics(); 
display.getMetrics(dm); 
float density = dm.density; 
int screenWidth = display.getWidth(); 

, vous aurez votre écran densité comme float .. Ainsi, vous pouvez l'utiliser pour calculer votre largeur de textView comme:

int newWidth = (int) (density * 100); 

dont 100 est la taille basée ici. Ou vous pouvez avoir un ratio en fonction de votre écranWdith.

int newWidth = screenWidth/2; 
+0

Je pensais à quelque chose comme _setTextSize() _ au lieu de _setWidth() _ – boburShox

+1

Ok, donc vous Voulez-vous voir votre texte complètement .. et vous n'avez pas besoin d'être placé un endroit spécifique? – yahya

+0

Oui. Juste le milieu va bien. – boburShox

Questions connexes