244

我可以android:gravity="bottom|center_horizontal"在 textview 上使用 xml 来获得我想要的结果,但我需要以编程方式执行此操作。如果tablerowrelativelayout.

我试过了:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);

但是,如果我理解正确,那会将其应用于tablerow,而不是 textview?

4

7 回答 7

577
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);

Kotlin 版本(感谢 Thommy)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

另外,您是在谈论重力还是关于 layout_gravity?后者在RelativeLayout中不起作用。

于 2010-09-23T07:34:38.607 回答
40

这将使文本在文本视图中居中:

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);
于 2010-09-23T05:54:26.070 回答
9

我们可以像下面这样在任何视图上设置布局重力-

myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
 or
myView.setGravity(Gravity.BOTTOM);

这相当于下面的 xml 代码

<...
 android:gravity="center_vertical|right"
 ...
 .../>
于 2016-09-19T05:04:17.627 回答
3

你应该使用textView.setGravity(Gravity.CENTER_HORIZONTAL);.

请记住,使用

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;

不会工作。这将为小部件而不是文本设置重力。

于 2017-03-17T07:01:57.973 回答
2

使用此代码

        TextView textView = new TextView(YourActivity.this);
        textView.setGravity(Gravity.CENTER | Gravity.TOP);
        textView.setText("some text");
于 2017-07-07T09:35:23.157 回答
2
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

这将设置您的文本视图的重力。

于 2017-07-07T10:02:02.013 回答
1

通过做一些事情来解决这个问题,首先得到height我的TextView,然后通过文本size来获取可能的总行数TextView

int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize();

获得此值后,您需要将您的设置TextView maxLines为这个新值。

TextView.setMaxLines(maxLines);

一旦超过最大行数,将其设置为Gravity,它将自动向下滚动。Bottom

if (TextView.getLineCount() >= maxLines) {
    TextView.setGravity(Gravity.BOTTOM);
}

为了使其正常工作,您必须使用append()TextView如果您setText()无法正常工作。

TextView.append("Your Text");

这种方法的好处是它可以动态地使用,而不管height你的TextView和文本的size。如果您决定对布局进行修改,此代码仍然有效。

于 2019-09-02T17:54:55.223 回答