通过文档,查到TextView下有这么个方法
setLayoutParams(ViewGroup.LayoutParams params)
但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,请教下该如何写?
ViewGroup.LayoutParams
setMargins
LinearLayout.LayoutParams
ringa_lee
マニュアルには次のように書かれています: public void setLayoutParams (ViewGroup.LayoutParams params), "このメソッドは、親ビューにいくつかのパラメーターを提供し、親ビュー内のビューの位置 (またはレイアウト) を指定します。 。 』
public void setLayoutParams (ViewGroup.LayoutParams params)
このビューに関連付けられたレイアウト パラメータを設定します。これらは、このビューの親に、どのように配置するかを指定するパラメータを提供します。
TextView (または他の View) のマージン属性を動的に変更する必要がある場合 (android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft) code>、android:layout_marginRight)、レイアウト内でビューを定義するのではなく、コードを通じてこのビューを動的に追加することをお勧めします。
android:layout_marginTop
android:layout_marginBottom
android:layout_marginLeft) code>、android:layout_marginRight)、レイアウト内でビューを定義するのではなく、コードを通じてこのビューを動的に追加することをお勧めします。
android:layout_marginRight
親ビューが LinearLayout の場合は、textView.setLayoutParams(params) を直接呼び出して、textView を LinearLayout に追加できます。
LinearLayout
textView.setLayoutParams(params)
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 を親ビューに:
RelativeLayout
FrameLayout
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); // + 行を追加します
上記のコードはテスト済みです。
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
Margin を設定できる ViewGroup のすべての LayoutParams は、基本的に MarginLayoutParams から取得されます。 LayoutParams のサブクラス。getLayoutParams()
Margin
ViewGroup
LayoutParams
MarginLayoutParams
getLayoutParams()
ViewGroup.MarginLayoutParams
Layoutparams をリセットするだけです
マニュアルには次のように書かれています:
public void setLayoutParams (ViewGroup.LayoutParams params)
, "このメソッドは、親ビューにいくつかのパラメーターを提供し、親ビュー内のビューの位置 (またはレイアウト) を指定します。 。 』TextView (または他の View) のマージン属性を動的に変更する必要がある場合 (
android:layout_marginTop
、android:layout_marginBottom
、android:layout_marginLeft) code>、
android:layout_marginRight
)、レイアウト内でビューを定義するのではなく、コードを通じてこのビューを動的に追加することをお勧めします。親ビューが
LinearLayout
の場合は、textView.setLayoutParams(params)
を直接呼び出して、textView を LinearLayout に追加できます。親ビューが
RelativeLayout
またはFrameLayout
の場合、上記の方法は無効です。解決するには、新しい LinearLayout を作成し、それに textView を追加します。この LinearLayout を親ビューに:上記のコードはテスト済みです。
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
を渡すときに、強制的にMargin
を設定できるViewGroup
のすべてのLayoutParams
は、基本的にMarginLayoutParams
から取得されます。LayoutParams
のサブクラス。getLayoutParams()
ViewGroup.MarginLayoutParams
に変換できます。Layoutparams をリセットするだけです