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

问题描述 投票:207回答:7

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

我尝试过:

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

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

android android-layout textview gravity
7个回答
500
投票
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);

Kotlin版本(感谢Thommy)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

此外,您是在谈论gravity还是在layout_gravity?后者在RelativeLayout ..

中不起作用

39
投票

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

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

6
投票

我们可以在下面的任何视图中设置布局重力-

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

相当于下面的xml代码

<...
 android:gravity="center_vertical|right"
 ...
 .../>

2
投票

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

记住使用

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

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


2
投票
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

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


1
投票

使用此代码

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

0
投票

通过做几件事解决了这个问题,首先获取我的heightTextView,然后将其跳至文本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");

此方法的优点在于,无论heightTextView和文本size,都可以动态使用此方法。如果您决定修改布局,则此代码仍然有效。

© www.soinside.com 2019 - 2024. All rights reserved.