동적레이아웃(DynamicLayout) - width, height
동적레이아웃(DynamicLayout)
width, height
ㆍ LayoutParams
ㆍ setLayoutParams
ㆍ MATCH_PARENT
ㆍ WRAP_CONTENT
이번글에서 첫번째로
만들어볼 화면 4가지
첫번째 화면
width = WRAP_CONTENT
height = WRAP_CONTENT
두번째 화면
width = MATCH_PARENT
height = WRAP_CONTENT
세번째 화면
width = WRAP_CONTENT
height = MATCH_PARENT
네번째 화면
width = MATCH_PARENT
height = MATCH_PARENT
코드작성
1. 기본적인 전체 레이아웃 LinearLayout 생성
2. LinearLayout에 들어갈 Button 생성
3. Button에 HELLO WORLD! 텍스트 넣기
4. LinearLayout의 width, height값을 MATCH_PARENT 적용
5. Button의 width, height을 변경해보면서 4가지 화면 구현
1. 기본적인 전체 레이아웃 LinearLayout 생성
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
setContentView(ll);
}
}
2. LinearLayout에 들어갈 Button 생성
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
Button btn = new Button(this);
ll.addView(btn);
setContentView(ll);
}
}
3. Button에 HELLO WORLD! 텍스트 넣기
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
Button btn = new Button(this);
btn.setText("HELLO WORLD!");
ll.addView(btn);
setContentView(ll);
}
}
4. LinearLayout의 width, height값을 MATCH_PARENT 적용
LayoutParams
: 레이아웃을 동적으로 생성할때
width, height, margin, padding등의
초기값을 설정해 줄 수 있다
setLayoutParams
: 설정한 초기값을 해당 View에
적용시킬 수 있다.
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(param);
Button btn = new Button(this);
btn.setText("HELLO WORLD!");
ll.addView(btn);
setContentView(ll);
}
}
5. Button의 width, height을 변경해보면서 4가지 화면 구현
첫번째 화면
width = WRAP_CONTENT
height = WRAP_CONTENT
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(param);
Button btn = new Button(this);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
btn.setLayoutParams(lp);
btn.setText("HELLO WORLD!");
ll.addView(btn);
setContentView(ll);
}
}
두번째 화면
width = MATCH_PARENT
height = WRAP_CONTENT
(공통코드 생략)
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
세번째 화면
width = MATCH_PARENT
height = WRAP_CONTENT
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT);
네번째 화면
width = MATCH_PARENT
height = MATCH_PARENT
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
이번글에서
두번째로
만들어볼 화면
버튼의 크기를
정해서 생성하기
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(원하는 width, 원하는 height);
public class MainActivity extends AppCompatActivity
{
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(param);
btn = new Button(this);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(200,200);
btn.setLayoutParams(lp);
btn.setText("HELLO WORLD!");
ll.addView(btn);
setContentView(ll);
}
}
Toast를 찍기 위해서는?
Toast.makeText(this,"width : "+btn.getWidth()+"\n"+"height : "+btn.getHeight(),Toast.LENGTH_LONG).show();
어디다가 작성?
setContentView(ll);
아래?
NO NO!!
왜 아래에 쓰면 안되는가?
아주 과거에 썼던글
최종코드
public class MainActivity extends AppCompatActivity
{
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(param);
btn = new Button(this);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(200,200);
btn.setLayoutParams(lp);
btn.setText("HELLO WORLD!");
ll.addView(btn);
setContentView(ll);
}
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
Toast.makeText(this,"width : "+btn.getWidth()+"\n"+"height : "+btn.getHeight(),Toast.LENGTH_LONG).show();
super.onWindowFocusChanged(hasFocus);
}
}
'안드로이드(android) > 레이아웃(Layout)' 카테고리의 다른 글
동적레이아웃(DynamicLayout) - Margin, Padding (0) | 2016.10.10 |
---|---|
동적레이아웃(DynamicLayout) - Orientation (0) | 2016.10.10 |
레이아웃(Layout)을 동적으로 생성 해보자(1) (0) | 2016.05.18 |
RelativeLayout 기본 (1) | 2016.04.13 |
1.LinearLayout - 1편 (0) | 2016.03.19 |