我可以在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?
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Kotlin版本(感谢Thommy)
labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM
此外,您是在谈论gravity还是在layout_gravity?后者在RelativeLayout ..
中不起作用这将使文本在文本视图中居中:
TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);
我们可以在下面的任何视图中设置布局重力-
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_HORIZONTAL);
。
记住使用
LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
不会工作。这将为小部件而不是文本设置重力。
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);
这将设置文本视图的重力。
使用此代码
TextView textView = new TextView(YourActivity.this);
textView.setGravity(Gravity.CENTER | Gravity.TOP);
textView.setText("some text");
通过做几件事解决了这个问题,首先获取我的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
,都可以动态使用此方法。如果您决定修改布局,则此代码仍然有效。