동적레이아웃(DynamicLayout) - Orientation
동적레이아웃(DynamicLayout)
Orientation
ㆍsetOrientation
ㆍ이번글에서는 간단하게 Orientation과
동적으로 레이아웃을 만들때 처음에 어떤식으로
접근해야 되는지 알아보도록 하겠습니다
이번글에서 만들어볼 화면
위의 화면을 만들기 위해서는
기본적으로 LinearLayout 2개가 필요합니다
(아 물론 Linear로만 만들때 기준
Relative는 나중에 할 예정입니다)
LinearLayout 하나는 Orientation Vertical
하나는 Horizontal로 설정해줘야 합니다.
그리고 버튼 3개가 필요하겠죠
그리고
LinearLayout이든 Button이든
width, height는 전부 Wrap_content로
주면 될 것같습니다.
xml로 짜보면 이런식으로
해주면 되겠죠
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context="com.tistory.itpangpang.dynamicviewex2.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3" />
</LinearLayout>
</LinearLayout>
그럼 위에 정보를
토대로 자바코드로만
똑같이 만들어보겠습니다
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll_one = new LinearLayout(this);
LinearLayout ll_two = new LinearLayout(this);
Button btn_one = new Button(this);
Button btn_two = new Button(this);
Button btn_three = new Button(this);
setContentView(ll_one);
}
}
먼저 여기까지만 보면
단순히 코드로
LinearLayout 2개와
Button 3개를 생성했습니다
그리고
전체를
감싸는 LinearLayout이
ll_one이므로
setCountentView(ll_one);
으로 적어줬습니다
그 다음
ll_one 2명의 자식들이
btn_one(Button)
ll_two(LinearLayout(손자:Button))
세로로 나열되있으므로
Orientation
Vertical로 잡다주고
ll_two 2명 자식들이
2(Button) 3(Button)
가로로 나열되있으므로
Orientation
Horizontal로 잡아줍니다
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll_one = new LinearLayout(this);
LinearLayout ll_two = new LinearLayout(this);
Button btn_one = new Button(this);
Button btn_two = new Button(this);
Button btn_three = new Button(this);
ll_one.setOrientation(LinearLayout.VERTICAL);
ll_two.setOrientation(LinearLayout.HORIZONTAL);
setContentView(ll_one);
}
}
그 다음에
LinearLayout 부모들은
자식들을 다 품어줍니다
(addView)
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll_one = new LinearLayout(this);
LinearLayout ll_two = new LinearLayout(this);
Button btn_one = new Button(this);
Button btn_two = new Button(this);
Button btn_three = new Button(this);
ll_one.setOrientation(LinearLayout.VERTICAL);
ll_two.setOrientation(LinearLayout.HORIZONTAL);
ll_one.addView(btn_one);
ll_one.addView(ll_two);
ll_two.addView(btn_two);
ll_two.addView(btn_three);
setContentView(ll_one);
}
}
아 한가지 까먹은
부분이..
Button 자식들의
이름을 붙여줘야됩니다
(setText)
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll_one = new LinearLayout(this);
LinearLayout ll_two = new LinearLayout(this);
Button btn_one = new Button(this);
Button btn_two = new Button(this);
Button btn_three = new Button(this);
btn_one.setText("1");
btn_two.setText("2");
btn_three.setText("3");
ll_one.setOrientation(LinearLayout.VERTICAL);
ll_two.setOrientation(LinearLayout.HORIZONTAL);
ll_one.addView(btn_one);
ll_one.addView(ll_two);
ll_two.addView(btn_two);
ll_two.addView(btn_three);
setContentView(ll_one);
}
}
마지막으로
지난글에서 했던
width, height만
WRAP_CONTENT로
넣어주면 마무리가
될 것 같습니다
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll_one = new LinearLayout(this);
LinearLayout ll_two = new LinearLayout(this);
Button btn_one = new Button(this);
Button btn_two = new Button(this);
Button btn_three = new Button(this);
btn_one.setText("1");
btn_two.setText("2");
btn_three.setText("3");
ll_one.setOrientation(LinearLayout.VERTICAL);
ll_two.setOrientation(LinearLayout.HORIZONTAL);
ll_one.addView(btn_one);
ll_one.addView(ll_two);
ll_two.addView(btn_two);
ll_two.addView(btn_three);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
btn_one.setLayoutParams(layoutParams);
ll_two.setLayoutParams(layoutParams);
setContentView(ll_one);
}
}
결과확인!
잘 나왔습니다!!
'안드로이드(android) > 레이아웃(Layout)' 카테고리의 다른 글
RelativeLayout margin 안먹히는 경우 (1) | 2016.12.11 |
---|---|
동적레이아웃(DynamicLayout) - Margin, Padding (0) | 2016.10.10 |
동적레이아웃(DynamicLayout) - width, height (2) | 2016.10.09 |
레이아웃(Layout)을 동적으로 생성 해보자(1) (0) | 2016.05.18 |
RelativeLayout 기본 (1) | 2016.04.13 |