244

android:gravity="bottom|center_horizontal"テキストビューで xml を使用して目的の結果を得ることができますが、これをプログラムで行う必要があります。tablerow私のテキストビューは、それが重要な場合に内部にありrelativelayoutます。

私が試してみました:

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

しかし、私が正しく理解していれば、それtablerowは textview ではなく に適用されますか?

4

7 に答える 7

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

Kotlinバージョン(Thommyに感謝)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

また、重力について話しているのですか、それともlayout_gravityについて話しているのですか?後者はRelativeLayoutでは機能しません。

于 2010-09-23T07:34:38.607 に答える
40

これにより、テキスト ビューでテキストが中央に配置されます。

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);
于 2010-09-23T05:54:26.070 に答える
1

いくつかのことを行うことでこれを解決しました。最初heightに myを取得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()ます。TextViewsetText()

TextView.append("Your Text");

このメソッドの利点はheight、 yourTextViewと textに関係なく動的に使用できることですsize。レイアウトを変更する場合でも、このコードは機能します。

于 2019-09-02T17:54:55.223 に答える