たぼさんの部屋

いちょぼとのんびり

L004) Basic Layout #1: LayoutParams#setMargins 全体にmarginをセットする

目的

画面の全体にmarginをセットする
下地にはRelativeLayoutを使う
その上にLinearLayoutをのせる

point

ViewGroup#setMargins()

ViewGroup#MarginLayoutParams

android.view.ViewGroup.MarginLayoutParams marginParams = 
   (MarginLayoutParams)liConteiner.getLayoutParams();
marginParams.setMargins(10, 10, 10, 10);
liConteiner.setLayoutParams(marginParams);

(あるいは)
親ViewGroup#LayoutParams

//親ViewGroupのLayoutParams指定
RelativeLayout.LayoutParams lpConteiner = new RelativeLayout.LayoutParams(FP,FP);
lpConteiner.setMargins(10, 10, 10, 10);
liConteiner.setLayoutParams(lpConteiner);

FP,WC

以下のようにViewGroup.LaoutParamsでいい。

private final int FP = ViewGroup.LayoutParams.FILL_PARENT;
private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

実行

f:id:donsuka_kk:20121118223036p:plain

Main.java

package com.example.l004_basic_layout;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class Main extends Activity {

	Context context;
	RelativeLayout base;	//LinearLayoutでもいい(FrameLauyoutだと、marginleft,margintopの指定不可)
	LinearLayout liConteiner;
	private final int FP = ViewGroup.LayoutParams.FILL_PARENT;
	private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	
	    // TODO Auto-generated method stub
	    context = getApplicationContext();
	    
	    base = new RelativeLayout(context);
	    setContentView(base);
	    base.setBackgroundColor(Color.GRAY);
	    
	    liConteiner = new LinearLayout(context);
	    base.addView(liConteiner,new RelativeLayout.LayoutParams(FP,FP));
	    
	    //linearのプロパティ設定
	    liConteiner.setBackgroundColor(Color.BLUE);
	    
	    //XXX どちらの記述方法も動作する
	    /*
	    android.view.ViewGroup.MarginLayoutParams marginParams = (MarginLayoutParams)liConteiner.getLayoutParams();
	    marginParams.setMargins(10, 10, 10, 10);
	    liConteiner.setLayoutParams(marginParams);
		*/
	    //XXX 外側のViewGroup(この場合はRelativeLayout)のLayoutParamsを取得することに注意
	    RelativeLayout.LayoutParams lpConteiner = new RelativeLayout.LayoutParams(FP,FP);
	    lpConteiner.setMargins(10, 10, 10, 10);
	    liConteiner.setLayoutParams(lpConteiner);
	    
	}

}