Android以编程方式设置TextView的重力

时间:2010-09-23 05:45:31

标签: android android-layout textview gravity

我可以在textview上的xml中使用android:gravity="bottom|center_horizontal"来获得我想要的结果,但我需要以编程方式执行此操作。我的textview位于tablerow内,如果在relativelayout中有效。

我试过了:

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

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

7 个答案:

答案 0 :(得分:472)

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

另外,您是在谈论 gravity 还是layout_gravity?后者不适用于 RelativeLayout

答案 1 :(得分:38)

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

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

答案 2 :(得分:6)

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

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

这与下面的xml代码

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

答案 3 :(得分: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;

没有工作。这将设置窗口小部件的重力,而不是它的文本。

答案 4 :(得分:1)

使用此代码

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

答案 5 :(得分:1)

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

这将设置textview的重力。

答案 6 :(得分:0)

通过做一些事情解决了这个问题,首先获取我的height的{​​{1}},然后将其跳至文本TextView,以获取{{1 }}。

size

获得此值后,需要将TextView int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize(); 设置为此新值。

TextView

一旦超过最大行数,将maxLines设置为TextView.setMaxLines(maxLines); ,它将自动向下滚动。

Gravity

要使其正常工作,必须在Bottomif (TextView.getLineCount() >= maxLines) { TextView.setGravity(Gravity.BOTTOM); } 之间使用append(),如果您TextView不能使用。

setText()

此方法的优点是,可以{} {1}}中的TextView.append("Your Text"); 和文本height来动态使用此方法。如果您决定修改布局,则此代码仍然有效。