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

자바코드에서 버튼크기 조절

0 추천

현재 달력을 만들고 있는데 날짜를 누르면 다른화면을 인텐트 하도록 하려고 합니다...

 날짜 클릭을 어떻게 시켜야 될지 고민하다가 그냥 날짜부분을 TextView에서 Button으로 바꿨거든요 

근데 버튼 크기가 크다보니 날짜가 7개가 들어가야되는데 4개만들어가고 3개가 잘려서 화면에 안잡히더라고요

그래서 버튼 사이즈를 줄이고 싶은데 어떻게 해야될지 알려주세요ㅠㅠ

package com.example.a219.mydiary;

 

        import java.util.ArrayList;
        import java.util.Calendar;

        import android.app.Activity;
        import android.graphics.Color;
        import android.os.Bundle;
        import android.view.Gravity;
        import android.view.View;
        import android.widget.Button;
        import android.widget.TableLayout;
        import android.widget.TableRow;
        import android.widget.TextView;

public class MainActivity extends Activity {

    ArrayList<Button> list;
    TextView today;
    int firstDay;
    int totDays;
    int iYear;
    int iMonth;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// 현재 년과 월을 구함
        Calendar calendar = Calendar.getInstance();
        iYear = calendar.get(Calendar.YEAR);
        iMonth = calendar.get(Calendar.MONTH);
        today = (TextView) findViewById( R.id.today );
        list = new ArrayList<Button>();
        TableLayout table = (TableLayout) findViewById(R.id.table);
        for (int i = 0; i < 6; i++) {
            TableRow tr = new TableRow(this);
            for (int j = 0; j < 7; j++) {
                Button tv = new Button(this);

                if (j == 0)
                    tv.setTextColor(Color.RED);
                else if (j == 6)
                    tv.setTextColor(Color.BLUE);
                else
                    tv.setTextColor(Color.BLACK);

                tv.setGravity(Gravity.CENTER_HORIZONTAL);

                tr.addView(tv);
                list.add(tv);
            }
            table.addView(tr);
        }

        table.setStretchAllColumns(true);

        table = (TableLayout) findViewById(R.id.week);
        table.setStretchAllColumns(true);

        setCalendar(iYear, iMonth);

        Button btn = (Button) findViewById(R.id.pre);
        btn.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {

                iMonth--;
                if( iMonth <= 0 ){
                    iYear--;
                    iMonth = 11;
                }
                setCalendar(iYear, iMonth);

            }
        });

        btn = (Button) findViewById(R.id.next);
        btn.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {
                iMonth++;
                if( iMonth >= 12 ){
                    iMonth = 0;
                    iYear++;
                }
                setCalendar(iYear, iMonth);

            }
        });
    }

    private void setCalendar(int year, int month) {
// calendar 객체 생
        Calendar calendar = Calendar.getInstance();
// 날자 셋팅
        calendar.set( Calendar.YEAR, year );
        calendar.set( Calendar.MONTH, month );
// 1일의 요일을 구하기 위해 현재 날짜를 1일로 설
        calendar.set( Calendar.DAY_OF_MONTH, 1 );
// 날짜를 출력
        today.setText( year + "년 " + (month + 1) + "월" );
// 요일을 구함 whatDay 에는 요일이 들어
        int whatDay = calendar.get( Calendar.DAY_OF_WEEK );
// j 변수는 1부터 증가하면서 일을 출력
        int j = 1;
// 기존에 적혀있던 텍스트 모두 초기화
        for( int i = 0 ; i < list.size(); i++ ){
            list.get( i ).setText( "" );
        }
// 날짜를 셋함
        for( int i = whatDay - 1 ; i < calendar.getActualMaximum( Calendar.DAY_OF_MONTH ) + whatDay - 1 ; i++ ){

            list.get( i ).setText( j++ + "" );

        }
    }

}

이게 제가 쓴 자바코드고

이게 현재 상태입니다;;

이재관 (120 포인트) 님이 2017년 5월 31일 질문

1개의 답변

0 추천
weight를 쓰시면 됩니다.

 

아니면 width에 하나하나 정확한 값을 넣으세여

 

꼭 Button으로 안하고 TextView로 해도 되구여

(위에 일 월 화 수 목 금 토 그대로 복붙해서 쓰셔도 되요)

TextView에 클릭리스너 달아주면 됩니다.
익명사용자 님이 2017년 5월 31일 답변
...