Я недавно создал макет месяца, используя TableLayout.
Я учел, что вам понадобится 6х7 дней в месяц, чтобы справиться с любой возможной ситуацией. (Первый день месяца - воскресенье, последний день месяца - понедельник и т. Д.)
На основе заданной даты (скажем, 3 августа) я вычисляю первый день, который будет показан
date = 3rd of August
firstDate = first day of month based on date
while( firstDate is not a monday )
firstDate = present date
Затем я вычисляю последний день, который будет показан:
lastDate = last day of month based on date
while( lastDate is not a Sunday )
lastDay = following date
Это дает мне интервал дат от firstDate
до lastDate
Затем я программно создаю 6 TableRow
, в которых есть 7 дней - TextView
или что-то еще. Это можно просто объявить в XML-файле, если вы не хотите создавать слишком много разметки на лету. Следует помнить одну вещь: установить layout_weight
для TextViews
так, чтобы все они были одинаково большими / маленькими, чтобы создать хорошую сетку.
Если то, что вам нужно, больше похоже на дневной или недельный распорядок, то задача немного сложнее.