2022年11月18日金曜日

Android: NavControllerとDrawerとAppBar(ActionBar) 未解決

最近の流れではAppBar(ActionBar)の中にToolbarを含め、そのToolbarがナビゲーションボタンやメニューを包括しています。

Drawerが無ければほぼ問題がないのですが、やはりDrawerは欲しいわけで。

実際のアプリではRecyclerViewで選択させたときにアクションモードを開始して問題が発生しました。問題を単純化させるために新規プロジェクトで作成してDrawerの雛形からアクションモードを発生させて試してみましたが結果は変わらず。

ちなみに最新情報を検索するのが面倒で開発環境はステーブルを使うようになっています。

何が問題になっているのかと言えば、単純にアクションモードを開始するとこんな感じに

これはこれで若干の問題があるのですがw、それはさておき、ここでアクションモードを設定してDrawerを開くと、

こんな感じに。

状況としてはずりっと画面がズレてToolbarの上部にアクションバーが表示され痛い感じに。

一般受けが良さそうではないので、一般的な形にするにはテーマに次の一行加えて

<item name="windowActionModeOverlay">true</item>

実行するといい感じにToolbarに重なって表示されるようになり、いい感じです。

このいい感じになった状態でDrawerを開くと…

なんかもう仕様書で「ツールバーに重ねて表示」とか書いてPGがやっつけで作ったような感じに。

 仕様書を書いた側は違うんだよなぁとか言いたい感じです。

最新のGMAILアプリを見る限りこの辺の表示方法がガラッと変わっているので全く参考になりませんでしたが、UIのガイドラインを無視すれば、そもそもDrawerをToolbarに重ねなければ表示上問題ないような気がします。スタックオーバーフローにもツールバーに重ねない方法は?という質問が上がっていますし、同様の結論を持っている人がいるようです。

テーマからレイアウトまで手を入れればこの辺は解決するのですが、カスタマイズすると結構核心部で痛い目を見るのであまり手を加えたくないのも事実。てか、この辺の仕様はもう変わらないんだろうなぁ…テーマやレイアウトで切り分けてるくせに、肝心の処理がその構造にべったりだったりして結局すべてに手を加えないといけないっていうクソめんどくささ。

なんかどこかに一発で綺麗になってくれそうな解決策ないかな?新しいマテリアルベースにするとこの辺変わったりするのかな?

0 件のコメント:

コメントを投稿