この属性は Java コード内で動的に変更できますか?
android:layout_marginRight
がありTextView
、位置を数ピクセル左に動的に変更する必要があります。
プログラムでそれを実行するにはどうすればいいですか?
ベストアンサー1
編集: レイアウト タイプに依存しない、より一般的な方法 (余白をサポートするレイアウト タイプであること以外):
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が例えば相対レイアウト、使用すべきである相対レイアウト.レイアウトパラメータLinearLayout.LayoutParamsの代わりに