현재 레이아웃 ROW수가 7인데 이걸 6개로 줄이고 싶은데
첨부된 소스에서 public void createViewItem( ) 이쪽에 값을 수정 못하겠어요 소스가 어떻게 구성되어있는지 분석도 어렵고..
7줄인걸 6줄로 어떻게 줄이죠 ?
원본 소스는 달력 구성이 다음과 같이 되어있는데 이걸 월, 화, 수, 목, 금, 토, 일을 떼고 1 월| 2 화| 3 수| ..... 이런식으로
바꾸고 싶은데 어떻게 해야되죠 ??? 설명이나 주석도 달아주시면 감사하겠습니다 ㅠㅠ
참고로 소스가 길어서 레이아웃 구성하는 부분만 소스 넣었습니다!
---------------------------------------------
월 | 화 | 수 | 목 | 금 | 토 | 일 |
---------------------------------------------
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---------------------------------------------
8 | 9 | 10 | 11 | 12 | 13 | 14 |
public class gsCalendar extends Activity
{
Context m_context ; /// context
LinearLayout m_targetLayout ; /// 달력을 넣을 레이아웃
Button [] m_controlBtn ; /// 달력 컨트롤할 버튼 4개 [전년도, 다음년도, 전달, 다음달]
TextView [] m_viewTv ; /// 년 월 일 표시할 텍스트뷰 3개[년, 월 , 일]
Calendar m_Calendar ; /// 사용할 달력
LinearLayout [ ] m_lineLy ; /// 7라인 요일표시 + 최대 6주
LinearLayout [ ] m_cellLy ; /// 7칸
TextView [ ] m_cellTextBtn ; /// 각 칸마다 넣을 텍스트뷰 (버튼처럼 이벤트 주려고 Btn 이라 붙였음)
/// 사실 버튼으로 하고싶은데 버튼에 텍스트 넣으면 죽어도 상하좌우 여백이 들어가서
/// 텍스트가 짤려서 TextView로 만들 수 밖에 없음
LinearLayout [ ] m_horizontalLine ; /// 경계선 라인 가로
LinearLayout [ ] m_verticalLine ; /// 경계선 라인 세로
int m_startPos ; /// 요일을 찍기 시작 할 위치
int m_lastDay ; /// 그 달의 마지막날
int m_selDay ; /// 현재 선택된 날짜
float m_displayScale ; /// 화면 사이즈에 따른 텍스트 크기 보정값 저장용
float m_textSize ; /// 텍스트 사이즈(위 라인의 변수와 곱해짐)
float m_topTextSize ; /// 요일텍스트 사이즈(역시 보정값과 곱해짐)
int m_tcHeight = 50 ; /// 요일 들어가는 부분 한칸의 높이
int m_cWidth = 50 ; /// 한칸의 넓이
int m_cHeight = 50 ; /// 한칸의 높이
int m_lineSize = 1 ; /// 경계선의 굵기
/// 상단에 표시하는 요일 텍스트
String [] m_dayText ={ "일", "월", "화", "수", "목", "금", "토" } ;
Button m_preYearBtn ; /// 전년도 버튼
Button m_nextYearBtn ; /// 다음년도 버튼
Button m_preMonthBtn ; /// 전월 버튼
Button m_nextMonthBtn ; /// 다음월 버튼
TextView m_yearTv ; /// 년 표시용 텍스트
TextView m_mothTv ; /// 월 표시용 텍스트
TextView m_dayTv ; /// 날짜 표시용 텍스트
/// 생성자
public gsCalendar( Context context, LinearLayout layout )
{
/// context저장
m_context = context ;
/// 타겟 레이아웃 저장
m_targetLayout = layout ;
/// 오늘 잘짜로 달력 생성
m_Calendar = Calendar.getInstance( ) ;
/// 표시할 각각의 레이어 생성
m_lineLy = new LinearLayout[ 7 ] ;
m_cellLy = new LinearLayout[ 7 * 7 ] ;
m_cellTextBtn = new TextView[ 7 * 7 ] ;
m_horizontalLine = new LinearLayout[ 6 ] ;
m_verticalLine = new LinearLayout[ 6 * 7 ] ;
/// 화면의 크기에 따른 보정값
m_displayScale = context.getResources( ).getDisplayMetrics( ).density ;
m_topTextSize = m_displayScale * 12.0f ;
//m_textSize = m_displayScale * 12.0f ;
m_textSize = 10;
}
public void setCalendarSize( int width, int height )
{
m_cWidth = ( width - ( m_lineSize * 6 ) ) / 7 ;
m_cHeight = ( height - ( m_lineSize * 6 ) ) / 7 ;
m_tcHeight = ( height - ( m_lineSize * 6 ) ) / 7 ;
}
/// 레이아웃과 버튼 그리고 경계션으로 쓸 라인용 레이아웃들을 생성한다.
public void createViewItem( )
{
for( int i = 0 ; i < 13 ; i++ )
{
if( i % 2 == 0 )
{
m_lineLy[i/2] = new LinearLayout( m_context ) ;
m_targetLayout.addView( m_lineLy[i/2] ) ;
for( int j = 0 ; j < 13 ; j++ )
{
if( j % 2 == 0 )
{
int pos = ( ( i / 2 ) * 7 ) + ( j / 2 ) ;
Log.d( "pos1", "" + pos ) ;
m_cellLy[ pos ] = new LinearLayout( m_context ) ;
m_cellTextBtn[ pos ] = new TextView( m_context ) ;
m_lineLy[ i / 2 ].addView( m_cellLy[ pos ] ) ;
m_cellLy[ pos ].addView( m_cellTextBtn[ pos ] ) ;
}
else
{
int pos = ( ( i / 2 ) * 6 ) + ( j - 1 ) / 2 ;
Log.d( "pos2", "" + pos ) ;
m_verticalLine[ pos ] = new LinearLayout( m_context ) ;
m_lineLy[ i / 2 ].addView( m_verticalLine[ pos ] ) ;
}
}
}
else
{
m_horizontalLine[ ( i - 1 ) / 2 ] = new LinearLayout( m_context ) ;
m_targetLayout.addView( m_horizontalLine[ ( i - 1 ) / 2 ] ) ;
}
}
}
/// 레이아웃과 버튼의 배경색, 글씨색 등 ViewParams를 셋팅
public void setLayoutParams( )
{
/// 메인 레이아웃은 세로로 나열
m_targetLayout.setOrientation( LinearLayout.VERTICAL ) ;
/// 만약 전체 배경이 있으면 넣어줌
if( m_bgImgId != null )
{
m_targetLayout.setBackgroundDrawable( m_bgImgId ) ;
}
for( int i = 0 ; i < 13 ; i++ )
{
if( i % 2 == 0 )
{
/// 각 라인을 구성하는 레이아웃들은 가로로 나열~
m_lineLy[i/2].setOrientation( LinearLayout.HORIZONTAL ) ;
m_lineLy[i/2].setLayoutParams( /// 레이아웃 사이즈는 warp_content로 설정
new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ) ;
/// 한칸한칸 옵션을 설정
for( int j = 0 ; j < 7 ; j++ )
{
int cellnum = ( ( i / 2 ) * 7 ) + j ;
/// 한칸한칸을 구성하는 레이아웃 사이즈는 역시 wrap_content로 설정
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ;
//param.setMargins( 1, 1, 1, 1 ) ; /// 마진을 1씩 줘서 라인을 그린다.
m_cellLy[ cellnum ].setLayoutParams( param ) ;
/// 한칸한칸 들어가는 버튼
m_cellTextBtn[ cellnum ].setGravity( Gravity.LEFT ) ;
/// 이하는 배경색 글씨색 글씨 크기 설정하는 부분
/// 첫라인은 월화수목금토일 표시하는 부분
if( i == 0 )
{
/// 요일 표시하는 부분의 넓이 높이
m_cellTextBtn[ cellnum ].setLayoutParams( new LinearLayout.LayoutParams( m_cWidth, m_tcHeight ) ) ;
/// 글씨 크기
m_cellTextBtn[ cellnum ].setTextSize( m_topTextSize ) ;
}
else /// 이하는 날짜 표시하는 부분
{
/// 숫자 표시되는 부분의 넓이와 높이
m_cellTextBtn[ cellnum ].setLayoutParams( new LinearLayout.LayoutParams( m_cWidth, m_cHeight ) ) ;
}
public void setLineParam( )
{
for( int i = 0 ; i < 6 ; i ++ )
{
m_horizontalLine[ i ].setBackgroundColor( m_colorParam.m_lineColor ) ; /// 라인색
m_horizontalLine[ i ].setLayoutParams( /// 가로 라인이니까 가로는 꽉 세로는 두께만큼
new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, m_lineSize ) ) ;
}
for( int i = 0 ; i < 7 ; i ++ )
{
for( int j = 0 ; j < 6 ; j++ )
{
int pos = ( i * 6 ) + j ;
m_verticalLine[ pos ].setBackgroundColor( m_colorParam.m_lineColor ) ; /// 라인색
m_verticalLine[ pos ].setLayoutParams( /// 세로 라인이니까 세로는 쭉~ 가로는 두께만큼
new LinearLayout.LayoutParams( m_lineSize, LayoutParams.FILL_PARENT ) ) ;
}
}
}
}