土曜日と日曜日の色を変更したカレンダーを表示する方法(Android)
対象製品
Xuni
詳細
土曜日と日曜日の色を変更したカレンダーを表示する方法(Android)
Xuniのカレンダーコントロールは、規定で標準的なカレンダーを表示し、
日付選択ができる状態になりカレンダーとしての機能を利用できます。
これが標準的な表示です。
日本にある多くのカレンダーは、土曜日が青、日曜日が赤で表示されています。
カレンダーをカスタマイズして、曜日の色を変更するには以下のコード記述で
実現できます。
曜日、日付ともに対応するイベント内で表示内容を変更します。
曜日を表示する領域(曜日スロット): DayOfWeekSlotLoading
日付を表示する領域(日付スロット): DaySlotLoading
このイベント内でカレンダーに表示される領域を判断して設定する必要がありますが、
Androidでは曜日の取得方法が異なりますのでご注意ください。
曜日スロットはイベントの引数でそのまま曜日情報(DayOfWeek)が渡されますが、
日付スロットではJava.Util.Date型で対象スロットの日付が引数として渡されます。
その日付情報をもとにシステムのカレンダーから曜日を取得します。
また、曜日列挙型がシステムとXuniでは原点が異なるため、
ゼロオリジンであるXuniのDayOfWeek列挙型に合わせて、1を引いた値を関数に渡す必要があります。
サンプルでは日付スロットの処理内に記述してあります。
サンプルコード
Java
Xuni > 技術情報 > ドキュメント > Calendar-機能-日付コンテンツのカスタマイズ
Xuniのカレンダーコントロールは、規定で標準的なカレンダーを表示し、
日付選択ができる状態になりカレンダーとしての機能を利用できます。
これが標準的な表示です。
日本にある多くのカレンダーは、土曜日が青、日曜日が赤で表示されています。
カレンダーをカスタマイズして、曜日の色を変更するには以下のコード記述で
実現できます。
曜日、日付ともに対応するイベント内で表示内容を変更します。
曜日を表示する領域(曜日スロット): DayOfWeekSlotLoading
日付を表示する領域(日付スロット): DaySlotLoading
このイベント内でカレンダーに表示される領域を判断して設定する必要がありますが、
Androidでは曜日の取得方法が異なりますのでご注意ください。
曜日スロットはイベントの引数でそのまま曜日情報(DayOfWeek)が渡されますが、
日付スロットではJava.Util.Date型で対象スロットの日付が引数として渡されます。
その日付情報をもとにシステムのカレンダーから曜日を取得します。
また、曜日列挙型がシステムとXuniでは原点が異なるため、
ゼロオリジンであるXuniのDayOfWeek列挙型に合わせて、1を引いた値を関数に渡す必要があります。
サンプルでは日付スロットの処理内に記述してあります。
サンプルコード
Java
public class GettingStartedActivity extends Activity { XuniCalendar calendar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // "activity_getting_started"レイアウトからビューを設定します。 setContentView(R.layout.activity_getting_started); // カレンダーオブジェクトの取得 calendar = (XuniCalendar) findViewById(R.id.calendar1); // 曜日スロット(DayOfWeekSlot)の処理 calendar.getDayOfWeekSlotLoading().addHandler(new IEventHandler() { @Override public void call(Object sender, Object args1) { // 曜日領域を設定するイベントの引数 CalendarDayOfWeekSlotLoadingEventArgs args = (CalendarDayOfWeekSlotLoadingEventArgs) args1; // 引数から曜日スロットを取得 CalendarDayOfWeekSlot dayofWeekSlot = (CalendarDayOfWeekSlot)args.getDayOfWeekSlot(); // 引数から曜日を取得 DayOfWeek dayOfWeek = args.getDayOfWeek(); // 曜日の色を取得して設定 dayofWeekSlot.setDayOfWeekTextColor(getColor(dayOfWeek)); } },this); // 日付スロット(DaySlot)の処理 calendar.getDaySlotLoading().addHandler(new IEventHandler() { @Override public void call(Object sender, Object args1) { // 日付領域を設定するイベントの引数 CalendarDaySlotLoadingEventArgs args = (CalendarDaySlotLoadingEventArgs)args1; //前後に隣接する月の日付の場合は対象外 if(args.isAdjacentDay()) return; // システムのカレンダーを取得 Calendar c = Calendar.getInstance(); c.setTime(args.getDate()); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); // 日付領域をカスタマイズして作成 CalendarDaySlot daySlot = (CalendarDaySlot)args.getDaySlot(); // システムの曜日の値をXuniの列挙型(ゼロオリジン)に変換 daySlot.setDayTextColor(getColor(DayOfWeek.fromId(dayOfWeek-1))); } }, this); } // 曜日で判断して色を返す関数 private int getColor( DayOfWeek dayofweek) { int color = Color.BLACK;// 既定値は黒 // 土曜日は青 if (dayofweek == DayOfWeek.Saturday) color = Color.BLUE; // 日曜日は赤 if (dayofweek == DayOfWeek.Sunday) color = Color.RED; return color; } }
Xuni > 技術情報 > ドキュメント > Calendar-機能-日付コンテンツのカスタマイズ