以编程方式居中TextView文本

Ale*_*ers 80 android textview

我在这里请求一些宽容,我只是从Android SDK教程开始,我正在尝试一些不在教程本身的兴趣,但我希望这很容易.

我试图TextView通过代码水平和垂直居中一个项目(我可以用XML做得很好).我已经看过几个例子,当父是一个表或一些其他对象时如何做到这一点,但我希望这对我来说更容易理解.(ps随意纠正我的术语).

以下是教程/我的工作模型中的示例代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经设法找到了这个setGravity方法,并且我已经尝试setLayoutParams了解它,但是我不确定它的范围是什么,因为我无法找到我应该导入的内容以获得WRAP_CONTENT常量来解决.根据我的理解,居中和content_wrapping + gravity是两个不同的东西.我想要一个如何在这种情况下做两件事的例子,也许我会在API文档中找到答案的方式/位置?

Syn*_*ete 234

yourTextView.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅在 `android:textAlignment="gravity"` 属性设置为重力时有效。否则 textAlignment 覆盖。 (2认同)
  • 用于以编程方式设置 textAlignment;`yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);` (2认同)

Nir*_*ara 25

用于动态中心

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)


Kal*_*ani 5

这肯定可以工作..

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);
Run Code Online (Sandbox Code Playgroud)

  • 从android.widget.LinearLayout继承时,LinearLayout似乎没有CENTER_IN_PARENT属性;我想念什么吗? (2认同)

Nav*_*kar 5

TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.TOP);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.BOTTOM);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.LEFT);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.CENTER_VERTICAL);
Run Code Online (Sandbox Code Playgroud)

text.setGravity(Gravity.CENTER_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)

还有更多可用