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;
実行
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); } }