93 votes

Centrer programmatiquement le texte du TextView

Je demande un peu d'indulgence ici, je commence juste à utiliser les tutoriels Android SDK et je tente quelque chose par intérêt qui n'est pas dans le tutoriel lui-même, mais j'espère que ce sera facile.

J'essaie de centrer un TextView via le code, horizontalement et verticalement (je peux très bien le faire en XML). J'ai vu plusieurs exemples de la manière de procéder lorsque le parent est une table ou un autre objet, mais j'espère que cela sera plus facile à comprendre pour moi. (p.s. N'hésitez pas à corriger ma terminologie).

Voici l'exemple de code du tutoriel / mon modèle de travail :

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;

public class DisplayMessageActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        textView.setGravity(View.TEXT_ALIGNMENT_GRAVITY);

        setContentView(textView);
    }
}

J'ai réussi à localiser le setGravity et j'ai essayé de m'initier à la méthode de la setLayoutParams mais je ne suis pas sûr de son champ d'application car je n'arrive pas à localiser ce que je dois importer pour obtenir l'adresse de l'utilisateur. WRAP_CONTENT constante à résoudre. D'après ce que j'ai compris, le centrage et le content_wrapping+gravity sont deux choses distinctes. J'aimerais avoir un exemple de comment faire les deux dans ce cas et peut-être comment/où j'aurais trouvé la réponse dans la documentation de l'API ?

258voto

syn3sthete Points 1291
yourTextView.setGravity(Gravity.CENTER);

25voto

Nirav Ranpara Points 5859

Pour le centre dynamique

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

6voto

Kalpesh Lakhani Points 589

Cela va fonctionner pour sûr

RelativeLayout layout = new RelativeLayout(R.layout.your_layour); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
textView.setLayoutParams(params);
textView.setGravity(Gravity.CENTER);

layout.addView(textView);

setcontentView(layout);

6voto

Naveen Tamrakar Points 1083
TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);

y

text.setGravity(Gravity.TOP);

y

text.setGravity(Gravity.BOTTOM);

y

text.setGravity(Gravity.LEFT);

et

text.setGravity(Gravity.RIGHT);

y

text.setGravity(Gravity.CENTER_VERTICAL);

y

text.setGravity(Gravity.CENTER_HORIZONTAL);

Et plus encore sont également disponibles

2voto

Antrromet Points 4742

Essayez d'ajouter le code suivant pour appliquer les paramètres de mise en page au TextView

LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X