アクションバーのオーバーフローアイコンを強制的に表示する方法 質問する

アクションバーのオーバーフローアイコンを強制的に表示する方法 質問する

オーバーフロー アイコンがアクション バーに常に表示されるようにしたいです (オーバーフロー項目があると仮定)。メニュー ボタンがあるモデルでは、オーバーフロー アイコンが表示されず、アクション メニュー項目の残りを取得するためにユーザーがデバイスのメニュー ボタンをタップしなければならない場合があります。ユーザーからこのことに関する苦情が寄せられています。

コンテキスト メニューの場合、デバイスにメニュー ボタンが組み込まれているかどうかに関係なく、オーバーフロー アイコンが常に表示されることに注意してください。

オーバーフロー アイコンをアクション バーに強制的に表示させると、「物理的な」アイコンの機能が重複することになるのは理解しています。これは Android の設計ガイドラインに違反していると考えるかもしれません。しかし、私の意見では、ユーザーが勝利します。ユーザーは混乱を招くと言い、その通りだと思います。

ベストアンサー1

おめでとうございます!優勝しました!

Android 4.4では、デバイスに物理的なメニューボタンがあるかどうかに関係なく、アクションバーの...アフォーダンスがそこにあります。Googleの現在の互換性定義文書専用のメニューボタンを設置することに、より強く反対するようになりました。

この動作を実現するために開発者が過去に使用したハックは次のとおりです。

try {
  ViewConfiguration config = ViewConfiguration.get(this);
  Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");

  if (menuKeyField != null) {
    menuKeyField.setAccessible(true);
    menuKeyField.setBoolean(config, false);
  }
}
catch (Exception e) {
  // presumably, not relevant
}

Android 4.4 以降ではこれは必要ありませんが、例外ハンドラが配置されているため、実行しても特に問題は発生せず、いつかsHasPermanentMenuKey完全に削除されると思います。

個人的には、Android 4.3 以前では変更しないつもりです。メニューがないという苦情が、同じメニューの重複バージョンがあるという苦情に置き換わる、モグラ叩きのような状況になるのではないかと考えているからです。とはいえ、これは今後正式に承認された動作であるため、開発者が古いデバイスでの一貫性を目指すことには問題はありません。

敬意を表して私が提起した問題についてコメントした人これに関して、変更点を指摘します。

おすすめ記事