我可以使用android:gravity="底部|center_horizontal"在xml文本视图上得到我想要的结果,但我需要通过编程来做到这一点。我的textview是在一个表内,如果这是一个相对布局。
我试过:
LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);
但如果我理解正确,这将适用于表,而不是textview?
通过做几件事解决了这个问题,首先得到我的TextView的高度和潜水它的文本大小,以获得与TextView可能的行总数。
int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize();
在你得到这个值后,你需要设置你的TextView maxLines到这个新值。
TextView.setMaxLines(maxLines);
一旦超过最大行数,将重力设置为底部,它将自动向下滚动。
if (TextView.getLineCount() >= maxLines) {
TextView.setGravity(Gravity.BOTTOM);
}
为了正确地工作,你必须使用append()到TextView,如果你setText()这将不起作用。
TextView.append("Your Text");
这个方法的好处是,它可以动态地使用,而不管你的TextView的高度和文本大小。如果你决定修改你的布局,这段代码仍然可以工作。