我可以使用android:gravity="底部|center_horizontal"在xml文本视图上得到我想要的结果,但我需要通过编程来做到这一点。我的textview是在一个表内,如果这是一个相对布局。

我试过:

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

但如果我理解正确,这将适用于表,而不是textview?


当前回答

textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

这将设置你的textview的重力。

其他回答

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

记住使用

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

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

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

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

这相当于下面的xml代码

<...
 android:gravity="center_vertical|right"
 ...
 .../>
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

这将设置你的textview的重力。

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

Kotlin版本(感谢Thommy)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

还有,你说的是重力还是布局重力?后者在相对布局中不起作用。

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

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);