1) LayoutParams
2) 최상위 뷰그룹의 LayoutParams 정보
View의 너비 높이 설정
android:layout_width="match_parent"
: match_parent 부모영역 전체에 맞춤
android:layout_height="wrap_content"
: content가 무리없이 보일 정도까지만
android:layout_height="100dp"
: dp단위로도 설정 가능
View와 Layout 사이 margin 설정
android:layout_marginTop="50dp"
android:layout_marginLeft="100dp"
android:layout_marginBottom="50dp"
기본 화면 구성
src/MainActivity.java 파일
public class MainActivity extends AppCompatActivity {
@override
proteted void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
setContentView
- R.layout.activity_main : res/layout/activity_main.xml 파일
- ContentFrameLayout에 올라갈 파트들을 정의한 파일을 ContentFrameLayout 자식으로 업로드
- Inflation : XML 레이아웃에 정의된 정보를 메모리 상에서 객체화하는 과정
- 레이아웃 XML의 내용을 파싱 -> 뷰 생성 -> 뷰에 정의된 속성들 설정
- setContentView 함수 내에 처리는 모두 LayoutInflater라는 클래스에 의존
전체 뷰를 감싸고 수직 배치 LinearLayout을 자바소스로 옮기기
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout rootLinear = new LinearLayout(this);
//이 객체가 어떤 문맥에 포함되느냐를 의미
rootLinear.setOrientation(LinearLayout.VERTICAL);
ContentFrameLayout.LayoutParams rootLP =
new ContentFrameLayout.LayoutParams(
ContentFrameLayout.LayoutParams.MATCH_PARENT,
ContentFrameLayout.LayoutParams.MATCH_PARENT);
// 생성자 (width, height)
rootLP.setMargins(20, 20, 20, 20);
LinearLayout InputLinear = new LinearLayout(this);
InputLinear.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutPatams InputLp =
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
TextView nameTv = new TextView(this);
nameTv.setText("Jnary임니꽈?");
LinearLayout.LayoutParams nameTxLp = new LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.WRAP_CONTENT);
nameTxLP.weight = 1;
EditText nameEt = new EditText(this);
LinearLayout.LayoutParams nameEtLp = new LinearLayout.Layoutparams(
0, LinearLayout.LayoutParams.WRAP_CONTENT);
nameEtLp.weight = 1;
//ContentFrameLayout에 ViewGroup 붙이는 과정
InputLinear.addView(nameTv, nameTvLp);
InputLinear.addView(nameEt, nameEtLp);
rootLinear.addView(InputLinear, InputLp);
//XML 파일
android:id="@+id/button1"
//.java 파일
Button b1 = (Button) findViewById(R.id.button1);