web-dev-qa-db-ger.com

TextView-Text programmgesteuert zentrieren

Ich bitte um etwas Nachsicht, ich fange gerade mit den Android SDK-Tutorials an und versuche etwas aus Interesse, das nicht im Tutorial selbst enthalten ist, aber ich hoffe, es wäre einfach.

Ich versuche, ein TextView -Element über Code horizontal und vertikal zu zentrieren (ich kann es in XML problemlos ausführen). Ich habe einige Beispiele dafür gesehen, wie man das macht, wenn das übergeordnete Objekt eine Tabelle oder ein anderes Objekt ist, aber ich hoffe, dass dies für mich leichter zu erfassen ist. (S. Fühlen Sie sich frei, meine Terminologie zu korrigieren).

Hier ist der Beispielcode aus dem Tutorial/meinem Arbeitsmodell:

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);
    }
}

Ich habe es geschafft, die setGravity-Methode zu finden, und ich habe versucht, die setLayoutParams-Methode zu verwenden, bin mir jedoch nicht sicher, in welchem ​​Bereich sie ausgeführt werden soll, da ich nicht finden kann, was ich importieren soll, um den WRAP_CONTENT zu erhalten. Konstante zu lösen. Nach meinem Verständnis sind Zentrierung und Inhaltsverpackung + Schwerkraft zwei getrennte Dinge. Ich hätte gerne ein Beispiel dafür, wie man beides in diesem Fall macht und vielleicht, wie/wo ich die Antwort in der API-Dokumentation gefunden hätte.

72
Alex Summers
yourTextView.setGravity(Gravity.CENTER);
220
Syn3sthete

Für dynamisch zentrieren 

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
20
Nirav Ranpara

das wird sicher funktionieren ..

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);
params.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(params);
textView.setGravity(Gravity.CENTER);

layout.addView(textView);

setcontentView(layout);
4
Kalpesh Lakhani
TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);

und 

text.setGravity(Gravity.TOP);

und 

text.setGravity(Gravity.BOTTOM);

und 

text.setGravity(Gravity.LEFT);

und

text.setGravity(Gravity.RIGHT);

und 

text.setGravity(Gravity.CENTER_VERTICAL);

und 

text.setGravity(Gravity.CENTER_HORIZONTAL);

Und mehr auch verfügbar 

4
Naveen Tamrakar

Fügen Sie den folgenden Code hinzu, um die Layoutparameter auf die TextView anzuwenden

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

Sie können Folgendes verwenden, um TextView Text in Kotlin programmatisch zu zentrieren:

textview.gravity = Gravity.CENTER
1
Ads

wenn Ihre Textgröße klein ist, sollten Sie die Breite Ihrer Textansicht auf "fill_parent" setzen. Danach können Sie Ihre TextView-Schwerkraft auf Mitte einstellen: 

TextView textView = new TextView(this);
textView.setText(message);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);
1
arif ardiansyah

probiere diese Methode 

  public void centerTextView(LinearLayout linearLayout) {
    TextView textView = new TextView(context);
    textView.setText(context.getString(R.string.no_records));
    textView.setTypeface(Typeface.DEFAULT_BOLD);
    textView.setGravity(Gravity.CENTER);
    textView.setTextSize(18.0f);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    linearLayout.addView(textView);
}
0
saigopi