RelativeLayoutを使用したコントロールの相対的設置
項目 | 内容 | 1 | 「RelativeLayout」を使い相対的ベースを生成します。 | 2 | 「RelativeLayout.LayoutParams」を使い座標を指定します。 |
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//相対的レイアウト(RelativeLayout)を使用する宣言
import android.widget.RelativeLayout;
//TextViewを使用する宣言
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//相対的レイアウトを使用するためコメントアウト
//setContentView(R.layout.activity_main);
//相対的レイアウト
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
x=100;
y=50;
width=200;
height=50;
TextView txt1 = new TextView(this);
txt1.setText("TextViewにデータを\n表示します。");
RelativeLayout.LayoutParams obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
layout.addView(txt1, obj1);
x=50;
y=150;
width=300;
height=50;
TextView txt2 = new TextView(this);
txt2.setText("下にTextViewコントロールを\n表示しました。");
RelativeLayout.LayoutParams obj2 = getLayoutObject(width, height);
obj2.leftMargin=x;
obj2.topMargin=y;
layout.addView(txt2, obj2);
}
//レイアウトを決定するオブジェクトを生成し渡します
public RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
実行結果
また、setIdを使用するためには「View.generateViewId()」を用いて実装することで対処できます。
※API Level 17(Android4.2)以降が対象となります。
|
|