14

onCreateOptionsMenuを使用してフラグメント メニュー項目を正常に追加しています...

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.additional_fragment_menu, menu);
}

上記の追加メニューには、1 つのメニュー項目が含まれています。私がする必要があるのは、このメニュー項目を他のすべての既存の項目の前に配置して、アクションバーに最初に表示されるようにすることです。現在、最後に表示されます。

(これは私が追加しているandroid:showAsAction="always"アイテムです)

プログラムで追加しようとしましたが、MenuItem オブジェクトにアイコンと showAsAction フラグを指定できるオプションがありません。

誰にもアイデアはありますか?

4

4 に答える 4

23

わかりました、私はEvilDuckから正しい方向へのポインターでこれを自分で割った。そして、はいあなたは正しいです、あなたはこれをプログラムで行うことができます!!

私が使用する必要があったのは、との組み合わせでしorderInCategorymenuCategoryorderInCategory指定がない場合、Androidは無視するようですmenuCategory

  • menuCategory属性値をに設定して、アプリ内のすべてのメニュー項目のカテゴリを指定しました"system"
  • 私の基本メニュー項目(を介してロードされるものActivity)は、10、11、12、13などの高いorderInCategory番号を設定する必要がありました。
  • 次に、同じカテゴリと値1のフラグメントメニューxmlを膨らませて追加するとorderInCategory、最初のアイテムとして表示されました。
于 2012-04-26T15:31:55.633 に答える
5

メニュー項目で「android:orderInCategory」属性を使用してみてください

于 2012-04-26T15:05:40.973 に答える
4

プログラムで showAsAction オプションまたはアイコンを設定できないということがどこにあるのかわかりません。

public void onCreateOptionsMenu(Menu menu)
{
    menu.add(Menu.NONE,  /** group ID.. not really needed unless you're working with groups **/
              0,         /** this is the items ID (get this in onOptionsItemSelected to determine what was clicked) **/
              Menu.NONE, /** ORDER.. this is what you want to change **/
              "Cancel") /** title **/
              .setIcon(R.drawable.ic_menu_cancel)
              .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}

ドキュメント:

menu.add(int groupId, int itemId, int order, CharSequence title)

setShowAsAction(int actionEnum)

setIcon(int resId)

于 2012-04-26T15:25:01.387 に答える
0

すべてが正しいです。onCreateView で 1 行以下のコードを使用するだけです。

setHasOptionsMenu(true);
于 2014-05-30T06:43:59.770 に答える