마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

동적으로 만든 버튼을 화면의 오른쪽으로 배치를 할려면 어떻게 해야하나요?

0 추천
Button deviceBtn;

        deviceBtn = new Button(this);
        deviceBtn.setText("테스트");
        deviceBtn.setTextSize(15);
       
        addContentView(deviceBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

 

동적으로 만든 버튼을 화면의 오른쪽으로 배치를 할려면 어떻게 해야하나요?
헨씀히포 (3,660 포인트) 님이 2013년 12월 24일 질문

1개의 답변

+1 추천
 
채택된 답변

일단 먼저 제가 간단한 개념을 하나 말씀드린자면,

뷰의 위치가 크기가 변하게 되면 xml에서는 layout_xxx 로 시작하는 속성을 설정하고,

자바 코딩에서는 LayoutParams 를 세팅해야 합니다.

예를 들어 gravity 속성은 뷰안의 텍스트를 정렬하는것이고,

뷰를 오른쪽으로 정렬하고자하면 뷰의 위치가 바뀌는것이므로 layout_gravity 속성을 설정해야합니다.

 

위에서 질문하신것도 버튼을 오른쪽으로 움직이니까 뷰의 위치가 변하는것이고 layout_gravity 속성을 설정해야 겠조.

자바코딩에서는

 addContentView(deviceBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

이것을

LinearLayout을 먼제 setContentView에 배치한후에

그 안에 버튼의 layout_gravity 속성을 설정하면 됩니다.

LinearLayout linear = new LinearLayout(this);

LinearLayout.LayoutParams paramlinear = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
 
setContentView(linear,paramlinear);

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(                   LinearLayout.LayoutParams.WRAP_CONTENT,    LinearLayout.LayoutParams.WRAP_CONTENT);

param.gravity = Gravity.LEFT;
linear.addView(deviceBtn, param);
이스트플랙 (2,510 포인트) 님이 2013년 12월 24일 답변
헨씀히포님이 2013년 12월 24일 채택됨
말씀고맙습니다
그런데 문제가 있는게 카메라뷰 위에 버튼을 동적으로 생성하고 오른쪽으로 배치를 할려고 합니다
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        deviceBtn = new Button(this);
        deviceBtn.setText("테스트");
        deviceBtn.setTextSize(15);
        
        mPreview = new Preview(this);
        setContentView(mPreview);
        addContentView(deviceBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

카메라뷰위에는 어떻게 해야하나요?
뷰를 배치하는것은 계층구조로 이루어져 있습니다.
뷰를 겹치게하기 위해서는 FrameLayout이나 RelativeLayout을 사용해야 합니다.
setContentView에는 Framelayout이나 RelativeLayout같은 뷰그룹을 넣고,
그 안에 preview 와 버튼을 배치해주시면 됩니다.
감사합니다
덕분에 많이 배웠습니다
...