CalendarView rev4

最近の縦方向に解像度が高い端末で見ると下方向が空いて:=カレンダーが圧縮されたように見える、とのことなので、ソースコードを見直してみた。

内部ViewFlipperのレイアウトパラメタをFILL_PARENTにした。(設定忘れてたという...)
これにより、コンテナが許可すれば親のViewの高さ一杯まで伸張して描画される。

ただし、リポジトリに上げているCalendarViewTestプロジェクトで使用しているレイアウトmain.xmlはルートのScrollView(MotionalScrollView)の属性"FillViewPort"がfalseになっており、このままではFILL_PARENTを指定しても意味が無い。

その場合は同MotionalScrollViewの同属性をtrueにセットすることで縦方向が伸張して描画される。

<org.kazzz.view.MotionableScrollView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/ScrollView01"
 android:layout_height="fill_parent"
 android:layout_width="fill_parent"
 android:fillViewport="true">
 〜
実行結果 変更前

縦方向に伸張されているのが解るだろうか。

個人的にはどんな解像度の端末でもカレンダの1日(1セル)が正方形で描画されたほうが綺麗なんだが、レイアウトとその上に配置されるViewの振る舞いとしてはこちらが正しいんだろうな。

Android Calendarview - Project Hosting on Google Code

追記:
実行結果のスクリーンショットをアップしていてandroid sdk 1.6でビルドした際と同2.2でビルドした場合でカレンダーの背景色が違うことに気がついた。

android 1.6にてビルド android 2.2にてビルド

最初は目の錯覚かと思ったが、android 1.6でビルドした側は明らかに青みがかっている。背景の塗り潰し、透過の描画に何か変更があったのだろうか。

追追記:
Nexus oneでも標準のブラウザを使ってこのエントリを見てみたが、android 1.6でビルドした側がまともな白色に見え、android 2.2では紫がかって見えた。訳がわからん。
そもそも私のPCのカラーマネジメントが異常なのかもしれない。