1. ホーム
  2. android

[解決済み】プログラムによってビューの右マージンを変更できますか?

2022-04-17 03:13:42

質問

この属性はJavaコードで動的に変更することができますか?

android:layout_marginRight

を持っています。 TextView その位置は、動的に左側に数ピクセル変更する必要があります。

プログラム的に行うには?

どのように解決するのですか?

EDIT: レイアウトタイプに依存しない、より一般的な方法です(余白をサポートするレイアウトタイプであること以外)。

public static void setMargins (View v, int l, int t, int r, int b) {
    if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
        ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
        p.setMargins(l, t, r, b);
        v.requestLayout();
    }
}

のドキュメントを確認する必要があります。 テキストビュー . 基本的には、TextViewのLayoutParamsオブジェクトを取得して、マージンを変更し、それをTextViewに戻すことになるでしょう。LinearLayoutの中にあると仮定して、次のようにしてみてください。

TextView tv = (TextView)findViewById(R.id.my_text_view);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
params.setMargins(0, 0, 10, 0); //substitute parameters for left, top, right, bottom
tv.setLayoutParams(params);

今すぐテストできないので、私のキャスティングは少しずれているかもしれませんが、マージンを変更するために修正が必要なのはLayoutParamsです。

ノート

TextViewがたとえば リラティブレイアウト を使用する必要があります。 RelativeLayout.LayoutParams。 の代わりに LinearLayout.LayoutParams