我可以在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?
答案 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
要使其正常工作,必须在Bottom
到if (TextView.getLineCount() >= maxLines) {
TextView.setGravity(Gravity.BOTTOM);
}
之间使用append()
,如果您TextView
不能使用。
setText()
此方法的优点是,可以{} {1}}中的TextView.append("Your Text");
和文本height
来动态使用此方法。如果您决定修改布局,则此代码仍然有效。