

orientation : 내부 위젯의 수직/수평 방향을 설정gravity : 내부 위젯의 정렬 방향을 좌측, 우측, 중앙으로 설정padding : 내부 위젯의 여백을 설정layout_weight : 레이아웃이 전체 화면에서 차지하는 공간의 가중값 baselineAligned : 내부에 배치할 위젯을 보기 좋게 정렬

horizontal : 위젯을 수평 방향으로 쌓겠다 (왼쪽에서부터)vertical : 위젯을 수직 방향으로 쌓겠다 (위에서부터) 
left, right, center, top, bottom 등 사용 가능right|bottom ) 

🍪 layout_gravity와 gravity의 차이
layout_gravity: 자신의 위치를 부모(주로 레이아웃)의 어디에 배치할 지 결정, 주로 위젯에 지정gravity: 자신에게 포함된 자식(주로 위젯)을 어디에 배치할 지 결정, 주로 레이아웃에 지정


⚠️ 주의해야하는 경우!
이렇게 만들고자 할 때는
첫번째 레이아웃의 높이를 다음과 같이 설정하면 안 된다.
android:layout_width="match_parent"
android:layout_height="match_parent"
이러면 전체(부모) 레이아웃을 첫번째 레이아웃이 다 차지하기 때문에,
첫번째 레이아웃만 화면에 출력되고
두번째와 세번째 레이아웃은 화면에서 보이지 않는다.
그렇기 때문에
android:layout_width="match_parent"
android:layout_height="wrap_content"
로 바꾸어야 한다.
public class MainActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// LinearLayout 변수 선언
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
// LinearLayout 변수의 파라미터에 너비와 높이가 있다.
LinearLayout.LayoutParams.MATCH_PARENT, // width 설정
LinearLayout.LayoutParams.MATCH_PARENT); // height 설정
LinearLayout baseLayout = new LinearLayout(this);
// 위젯을 수직방향(vertical)으로 쌓음
baseLayout.setOrientation(LinearLayout.VERTICAL);
// 배경 색 지정
baseLayout.setBackgroundColor(Color.rgb(0, 255, 0));
// 준비된 리니어레이아웃 변수를 출력한다.
setContentView(baseLayout, params);
// 버튼 변수 생성
Button btn = new Button(this);
btn.setText("버튼입니다");
btn.setBackgroundColor(Color.MAGENTA);
// 준비된 버튼을 레이아웃에 출력 (baseLayout은 앞에서 생성한 리니어레이아웃)
baseLayout.addView(btn);
// 버튼을 클릭했을 때 동작하는 리스너 생성
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(), "코드로 생성한 버튼입니다", Toast.LENGTH_SHORT).show();
}
});
}
}
위젯의 배치 방법 2가지
부모 레이아웃의 상하좌우에 배치
(⚠️ 각 속성값은 true 혹은 false로 지정)

다른 위젯을 기준으로 하여 상대적 위치에 배치
(⚠️ 각 속성값에 "@+id/기준이_되는_위젯_아이디"를 지정)


<TableRow/>의 개수<TableRow/> 안에 포함된 위젯의 수
android:layout_span="2" : 현재 셀부터 2개의 셀을 합쳐서 표시android:layout_column="1" : 1열부터 채우라는 의미 (열번호;index는 0부터 시작함)
<GridLayout/> 자체에 자주 사용되는 속성rowCount : 행 개수columnCount : 열의 수orientation : 그리드를 수평 방향을 우선할지, 수직 방향을 우선할지를 결정layout_row : 자신이 위치할 행 번호 (0번부터 시작)layout_column : 자신이 위치할 열 번호 (0번부터 시작)layout_rowSpan : 행을 지정된 수만큼 확장layout_columnSpan : 열을 지정된 수만큼 확장layout_gravity : 주로 fill, fill_vertical, fill_horizontal 등으로 지정 행 또는 열 확장하여 위젯을 확장된 셀에 꽉 채우는 효과를 냄
<FrameLayout/>에서 가끔 사용하는 속성foreground : 프레임레이아웃의 전경 이미지를 지정foregroundGravity : 전경 이미지의 위치를 지정 
참고 - 레이아웃의 유연성 속성