ウィジェット部分は旧アプリのものをほぼそのまま移植したコジごみカレンダーだったが、何故かウィジェットの配置するセル数が想定しているサイズより大きくなってしまうという問題が起きていた。 コジごみカレンダーは「セル縦 1 × 横 2」サイズのものを想定していたが、何故か Nexus 5X で配備しようとすると「2 × 3」になってしまう。

私は業務の Android 開発ではウィジェットを使用するという事がほぼ皆無だったので昨今のウィジェット開発事情に関して全く無知であった。 これに関しては株式会社ノーティス様の記事が非常に参考になった。

targetSdkVersion = 14 (Android 4.0) 以上の場合ウィジェットの 1 セルあたりの計算式が従来と異なるというのが原因で、旧コジごみカレンダーは Android 2.2 向けということで targetSdkVersion = 8 であったが今回の新アプリに関しては Android Nougat (Android N) に設定してあった。 まぁ今時 targetSdkVersion に過去のものを指定するというのは良くないのでウィジェットの計算式を新方式にして解決した。

株式会社ノーティス様の記事にも記載があるが、新旧仕様での n セルの dp 量は以下で計算出来る:

(targetSdkVersion 14 未満) 74 * n - 2
(targetSdkVersion 14 以上) 70 * n - 30

例えば 1 × 2 で配置しようとすると旧仕様だと 72 × 146 (dp) だが新仕様だと 40 × 110 (dp) となる。全然違う。