92

我在这里请求一些宽大处理,我只是从 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);
    }
}

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

4

9 回答 9

255
yourTextView.setGravity(Gravity.CENTER);
于 2012-10-08T05:42:25.990 回答
25

对于动态居中

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
于 2012-10-08T06:10:07.677 回答
6

这肯定会工作..

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);
于 2012-10-08T05:36:53.427 回答
5
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);

还有更多可用

于 2013-08-19T10:20:06.780 回答
2

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

LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);
于 2012-10-08T05:32:45.780 回答
2

如果您的文本尺寸很小,您应该将文本视图的宽度设置为“fill_parent”。之后,您可以将 TextView Gravity 设置为 center :

TextView textView = new TextView(this);
textView.setText(message);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);
于 2014-11-04T03:03:59.403 回答
2

您可以使用以下方法TextView在 Kotlin 中以编程方式居中文本:

textview.gravity = Gravity.CENTER
于 2018-08-21T22:03:06.050 回答
1

试试这个方法

  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);
}
于 2018-11-12T06:23:59.373 回答
0

这两个需要一起去工作。有一段时间一直在挠头。

numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER
 numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)
于 2020-01-27T09:49:24.830 回答