요일은 TextView로 추가했습니다.
그리고 GridView로 NumColumns를 7로 주어 7일 주기의 형태가 나올 수 있도록 했습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="221dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_weight="0"
android:gravity="center"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="30sp" />
<Button
android:id="@+id/button"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="이전달" />
<Button
android:id="@+id/button1"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="다음달" />
</TableRow>
</TableLayout>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:paddingTop="8dp"
app:layout_row="0">
<TextView
android:id="@+id/textView23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/sun"
android:textColor="@android:color/holo_red_dark"
android:textSize="18sp" />
<TextView
android:id="@+id/textView24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="8dp"
android:text="@string/mon"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/textView25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="6dp"
android:paddingRight="10dp"
android:text="@string/tue"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/textView26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="10dp"
android:text="@string/wed"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/textView27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="7dp"
android:paddingRight="10dp"
android:text="@string/thr"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/textView28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="14dp"
android:paddingRight="10dp"
android:text="@string/fri"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/textView29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="18dp"
android:paddingRight="10dp"
android:text="@string/sat"
android:textColor="@color/design_default_color_primary_dark"
android:textSize="18sp" />
</TableRow>
<GridView
android:id="@+id/GridView"
android:layout_width="350dp"
android:layout_height="281dp"
android:layout_marginLeft="20dp"
android:background="@android:color/darker_gray"
android:choiceMode="none"
android:gravity="fill"
android:horizontalSpacing="1dp"
android:numColumns="7"
android:paddingLeft="1dp"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:verticalSpacing="1dp"
app:layout_column="0"
app:layout_row="0">
</GridView>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="186dp"
android:layout_weight="0" />
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0"
android:paddingLeft="10dp">
<EditText
android:id="@+id/editText"
android:layout_width="304dp"
android:layout_height="wrap_content"
android:gravity="bottom"
android:hint="@string/todo"
android:inputType="textPersonName"
android:paddingLeft="10dp" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/todoadd"
android:textSize="16sp" />
</TableRow>
</LinearLayout>
1. XML 레이아웃 정의
2. 아이템을 위한 뷰 정의
3. 어댑터 클래스 정의
4. 리스트뷰 객체 정의
XML 레이아웃을 나타내기 위해서 저는 day.xml을 추가하여 그리드뷰 안의 날짜를 나타낼 수 있도록 만들었습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/dayy"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:padding="8dp"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="22sp" />
</LinearLayout>
public class MainActivity extends AppCompatActivity {
GridView gridView;
CalAdapter adapter;
ArrayList daylist;
Calendar mCal;
Calendar mDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCal = Calendar.getInstance();
// 캘린더 객체 생성
setDate(mCal.get(Calendar.MONTH)+1);
// Calendar.MONTH는 +1을 해주어야 한다 (자바에서는 월 : 0~11)
}
public void setDate(int month){
daylist = new ArrayList();
mCal.set(Calendar.MONTH, month - 1);
// 캘린더 값이 5일 때 6월을 의미하므로 -1
for (int i = 0; i < mCal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
daylist.add(i + 1);
// 해당 월의 마지막 날짜(getActualMaximum함수)를 구하여 i를 daylist에 채워 넣는다.
// 해당 월을 얼마나 표시할지 구할 수 있음.
}
gridView = findViewById(R.id.GridView);
adapter = new CalAdapter(this, daylist);
gridView.setAdapter(adapter);
// 어댑터 연결
}
}
class CalAdapter extends BaseAdapter {
private ArrayList daylist;
// 접근 제한자로 저장할 리스트 변수 설정
private Calendar mCal;
private Context context;
private LayoutInflater inflater;
public CalAdapter(Context context, ArrayList<String> daylist) {
this.daylist = daylist;
this.context = context;
inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
// 레이아웃 파일을 객체로 만들기
}
@Override
public int getCount() {
return daylist.size();
}
@Override
public Object getItem(int position) {
return daylist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
view = inflater.inflate(R.layout.day, parent, false);
// view를 만들고 싶은 뷰 , 부모뷰, false일 경우 layoutparam(?)만 사용
TextView dayy = view.findViewById(R.id.dayy);
dayy.setText(daylist.get(position) + "");
return view;
}
아직 현재 날짜도 안뜨고 달력 시작 날짜가 이상하죠....