Androidで動的にViewのmarginを変更する方法

2019年5月20日

本稿ではAndroid開発においてViewのmarginを動的に変更する方法を解説します。

 

 

Viewのmarginを動的に変更する方法

一般的にはViewのmarginはレイアウト(xml)ファイルで静的に指定しますが、

コードの中で動的にmarginを変更したいケースもあると思いますので具体的な方法を説明します。

 

package com.SampleApp.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);
        //1.LayoutParamsを取得
        LayoutParams lp = textView.getLayoutParams();
        //2.取得したLayoutParamsをMarginLayoutParamsに変換
        MarginLayoutParams mlp = (MarginLayoutParams)lp;
        //3.setMarginsでmarginを設定
        mlp.setMargins(mlp.leftMargin, 10, mlp.rightMargin, 10);
        
        //4.setLayoutParamsで対象Viewにmarginの反映
        textView.setLayoutParams(mlp);
    }
}

 

コードにも項番を振って記載してあるように以下の手順で動的に設定可能です。

  1. LayoutParamsを取得
  2. 取得したLayoutParamsをMarginLayoutParamsに変換
  3. setMarginsでmarginを設定
  4. setLayoutParamsで対象Viewにmarginの反映