以编程方式居中TextView文本

时间:2012-10-08 05:23:41

标签: android textview

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

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

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

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

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

9 个答案:

答案 0 :(得分:222)

yourTextView.setGravity(Gravity.CENTER);

答案 1 :(得分:21)

动态中心

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

答案 2 :(得分:4)

这肯定会有效。

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

答案 3 :(得分:4)

TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);

text.setGravity(Gravity.TOP);

text.setGravity(Gravity.BOTTOM);

text.setGravity(Gravity.LEFT);

text.setGravity(Gravity.RIGHT);

text.setGravity(Gravity.CENTER_VERTICAL);

text.setGravity(Gravity.CENTER_HORIZONTAL);

还有更多可行

答案 4 :(得分:2)

尝试添加以下代码以将布局参数应用于TextView

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

答案 5 :(得分:1)

如果文字尺寸较小,则应将文字视图的宽度设为" fill_parent"。之后,您可以将TextView Gravity设置为居中:

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

答案 6 :(得分:1)

您可以使用以下内容以编程方式将TextView文本置于Kotlin中:

textview.gravity = Gravity.CENTER

答案 7 :(得分:0)

尝试此方法

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

答案 8 :(得分:0)

这两个需要一起工作。 ing了一段时间。

numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER
 numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)