android - 如何通过代码设置TextView的Margin参数?
ringa_lee
ringa_lee 2017-04-17 14:55:10
0
3
627

通过文档,查到TextView下有这么个方法

setLayoutParams(ViewGroup.LayoutParams params)

但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,请教下该如何写?

ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
黄舟

マニュアルには次のように書かれています: public void setLayoutParams (ViewGroup.LayoutParams params), "このメソッドは、親ビューにいくつかのパラメーターを提供し、親ビュー内のビューの位置 (またはレイアウト) を指定します。 。 』

このビューに関連付けられたレイアウト パラメータを設定します。これらは、このビューの親に、どのように配置するかを指定するパラメータを提供します。

TextView (または他の View) のマージン属性を動的に変更する必要がある場合 (android:layout_marginTopandroid:layout_marginBottomandroid:layout_marginLeft) code>、android:layout_marginRight)、レイアウト内でビューを定義するのではなく、コードを通じてこのビューを動的に追加することをお勧めします。

親ビューが LinearLayout の場合は、textView.setLayoutParams(params) を直接呼び出して、textView を LinearLayout に追加できます。

LinearLayout レイアウト = (LinearLayout) findViewById(R.id.layoutView);

int 左、上、右、下;
左 = 上 = 右 = 下 = 64;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT、LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(左、上、右、下);

TextView textView = 新しい TextView(this);
textView.setText("ラベル");
textView.setLayoutParams(params);

layout.addView(textView);

親ビューが RelativeLayout または FrameLayout の場合、上記の方法は無効です。解決するには、新しい LinearLayout を作成し、それに textView を追加します。この LinearLayout を親ビューに:

FrameLayout レイアウト = (FrameLayout) findViewById(R.id.layoutView);

int 左、上、右、下;
左 = 上 = 右 = 下 = 64;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT、LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(左、上、右、下);

TextView textView = 新しい TextView(this);
textView.setText("ラベル");
textView.setLayoutParams(params);

LinearLayout ll = new LinearLayout(this); // + 行を追加します。
ll.setOrientation(LinearLayout.VERTICAL); // + 行を追加します
ll.addView(textView); // + 行を追加します
   
//layout.addView(textView) // - 行を削除します。
layout.addView(ll); // + 行を追加します 

上記のコードはテスト済みです。

いいねを押す +0
阿神

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

Margin を設定できる ViewGroup のすべての LayoutParams は、基本的に MarginLayoutParams から取得されます。 LayoutParams のサブクラス。getLayoutParams()

を渡すときに、強制的に ViewGroup.MarginLayoutParams に変換できます。
いいねを押す +0
黄舟

Layoutparams をリセットするだけです

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート