0

Android アプリで新しいプロジェクトを作成すると、

その後、自動的に 3 ドット設定メニューが必要な電話で作成されます

また、古いバージョンと同じように次の方法で処理されます。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

カスタム タイトルを作成する場合は、3 ドット メニューを自分で追加する必要があります。

いつ必要になるかをどうやって知ることができますか? 設定ボタンのない携帯電話を意味します

また、カスタマイズして 3 ドット ボタンにアタッチするコンテキスト メニューを作成するにはどうすればよいですか?

編集:

Shobhit Puri との話し合いの結果、アクションバーを考慮していないことがわかりました。最小限の API 8 を使用しているため、持っていません。

そのため、設定メニューが存在するかどうかを確認するために CommonsWare が提供したばかりのオプションがあります (API 8 に存在するかどうかを確認する必要があります)。

Shobhit Puri の提案は次のとおりです。

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(...) ; 
ActionBar ab = getActionBar(); 
ab.setTitle("My Title"); 
ab.setSubtitle("sub-title") ;

しかし、コアにはAPI 11またはサポートライブラリV7が必要です.Shobhit Puriの答えを除いて、彼のすべての助けのために.それが機能することがわかったら、最終的な解決策を投稿します

また、素敵な回答をくれたCommonsWareにも感謝します

編集2:

今のところ CommonsWare ソリューションを使用することにしました。次のように記述しました。

if (android.os.Build.VERSION.SDK_INT >= 14) {
            ViewConfiguration vc = ViewConfiguration.get(this);
            if (!vc.hasPermanentMenuKey()) {
                setting_dots.setVisibility(View.VISIBLE);
                setting_dots.setOnClickListener(this);
                registerForContextMenu(setting_dots);
            }
        }

理想的には、アクションバーを使用する必要があると思います。なぜなら、ほとんどの作業を提供してくれるからです。ただし、API 8 との互換性の問題がたくさんあるので、今のところは避けたいと思います。

4

3 に答える 3

0

Google によると、アクションバーのオーバーフローは、メニュー ハードウェア キーのない携帯電話でのみ表示されます。メニュー キーのある電話機では、ユーザがキーを押すとアクション オーバーフローが表示されます。 それでもこれを実装したい場合は、この解決策に従うことができます。

ここをクリックてご参照ください。

このメソッドをアクティビティにコピーし、onCreate メソッドからメソッドを呼び出すだけです

 private void getOverflowMenu() {
    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) {
       e.printStackTrace();
   }
 }

于 2014-04-11T05:47:36.030 に答える