如何在Android中从Java端将android:gravity设置为TextView

How set the android:gravity to TextView from Java side in Android

我可以在textview的xml中使用android:gravity="bottom|center_horizontal"以获得所需的结果,但是我需要以编程方式进行此操作。 如果在relativelayout中很重要,则我的textview位于tablerow中。

我努力了:

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

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


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

Kotlin版本(感谢Thommy)

1
labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

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


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

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


我们可以在任何视图上设置布局重力,如下所示:

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

这相当于下面的xml代码

1
2
3
4
<...
 android:gravity="center_vertical|right"
 ...
 .../>


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

记住使用

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

将无法正常工作。这将设置小部件的重力,而不是文本的重力。


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

这将设置您的textview的重力。


使用此代码

1
2
3
        TextView textView = new TextView(YourActivity.this);
        textView.setGravity(Gravity.CENTER | Gravity.TOP);
        textView.setText("some text");

通过做一些事情来解决此问题,首先获取我的TextViewheight并以文本size进行潜水,以获得TextView可能的总行数。

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

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

1
TextView.setMaxLines(maxLines);

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

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

为了使其正常工作,必须对TextView使用append()。如果setText(),则此方法将无效。

1
TextView.append("Your Text");

此方法的优点是,可以动态使用此方法,而与TextViewheight和文本size无关。如果您决定修改布局,则此代码仍然有效。