動的にビューのマージンを変更する

レイアウトからではなくコード中でビューのマージンを変更したいという場合があると思います。

その場合はMarginLayoutParamsを取得し、それを介してビューのマージンを変更します。

例えば、テキストビューのマージンをコード中から変更するには次のようにします。

package com.MyApp.myapp;

import android.view.ViewGroup.MarginLayoutParams;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity
{
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator_main);
        
        TextView textView = (TextView)findViewById(R.id.textView);
        LayoutParams lp = textView.getLayoutParams();
        MarginLayoutParams mlp = (MarginLayoutParams)lp;
        mlp.setMargins(mlp.leftMargin, 10, mlp.rightMargin, 10);
            //マージンを設定
        textView.setLayoutParams(mlp);
    }
}

このようにいったんLayoutParamsを取得してからMarginLayoutParamsに変換します。

あとはsetMarginsなどのメソッドでマージンを設定し、最後にsetLayoutParamsメソッドでマージンの変更を反映させます。

この例では左と右はそのままで上と下のマージンをそれぞれ10(単位はdp)に変更しています。

関連項目
プライバシーポリシー