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

동적 버튼 생성시 개행 방법 코드 문의

0 추천
        for (int i = 0; i < maxHome; i++) {
            Button home = new Button(this);
            LinearLayout.LayoutParams pm = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            home.setText("주택" + homeId);
            home.setId(homeId);
            home.setTextSize(20);
            home.setLayoutParams(pm);

            //버튼 기본 사이즈 측정
            Rect realSize = new Rect();
            home.getPaint().getTextBounds(home.getText().toString(), 0, home.getText().length(), realSize);
            Log.d("버튼가로길이", realSize.width()+"만큼 버튼가로길이");

            int useWidth = width;//for문에서 사용하기 위하여 act1에서 입력된 레이아웃 전체 가로길이 width를 useWidth변수명에 입력함

            totalBtnSize += realSize.width(); // 생성된 버튼의 사이즈 합계를 변수에 입력

            Log.d("가로길이가 제대로 입력되었는가",totalBtnSize+"만큼 입력됨.");
            Log.d("현재 레이아웃 가로길이는 얼마인가",useWidth+"임.");

            if (useWidth >= totalBtnSize) {
                buttonLayout.addView(home);

                Log.d("버튼추가1","버튼 "+homeId);

            } else if (useWidth < totalBtnSize && totalBtnSize/useWidth == 1) {
                buttonLayout2.setVisibility(View.VISIBLE); //두번째 버튼 레이아웃 보임
                buttonLayout2.addView(home);

                Log.d("버튼추가2","버튼 "+homeId);

            } else if (useWidth < totalBtnSize && totalBtnSize/useWidth == 2) {
                buttonLayout3.addView(home);
                buttonLayout3.setVisibility(View.VISIBLE); //세번째 버튼 레이아웃 보임

                Log.d("버튼추가3","버튼 "+homeId);
            } else {
                buttonLayout.addView(home);

                Log.d("버튼추가_기타","버튼 "+homeId);
            }

            home.setOnClickListener(onClickListener);
            homeId++;
        }

 

버튼을 동적으로 생성해주는데, 자동으로 개행할 수 있도록 하는 기능입니다.

버튼추가될 때마다 버튼길이를 측정해서(totalBtnSize), 추가될 레이아웃의 가로길이(useWidth)와 비교하도록 하고, 버튼길이가 레이아웃 길이를 초과할 때, 다음 레이아웃에 버튼이 추가되도록 하였습니다.

그런데, 길이 측정까지는 제대로 들어가는데, if문 안에있는 버튼 추가기능이 작동하지 않습니다.

참고로 버튼이 추가될 레이아웃(buttonLayout, buttonLayout2, buttonLayout3) 중, 2와 3은 Visibility 속성을 GONE로 해두었고, if문 안에서 VISIBLE되게 하였습니다. 무슨 문제일까요?

safetyzone (160 포인트) 님이 2020년 4월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...