通过文档,查到TextView下有这么个方法
setLayoutParams(ViewGroup.LayoutParams params)
但是ViewGroup.LayoutParams
这个东西,并没有setMargins
方法,LinearLayout.LayoutParams
才有,请教下该如何写?
黄舟2017-04-17 14:57:10
マニュアルには次のように書かれています: 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 に追加できます。
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); // + 行を追加します
上記のコードはテスト済みです。
阿神2017-04-17 14:57:10
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
Margin
を設定できる ViewGroup
のすべての LayoutParams
は、基本的に MarginLayoutParams
から取得されます。 LayoutParams
のサブクラス。getLayoutParams()
ViewGroup.MarginLayoutParams
に変換できます。