9

写真にあるように、モバイル用のクロムブラウザと同様のメニュー項目機能が必要です。戻る、進む、更新するメニュー項目を 1 行に並べたい。同様のメニュー項目を実装するにはどうすればよいですか? 参照はありますか、この機能をもたらすためのハックはありますか?

ここに画像の説明を入力

私のアプリはタブレット専用です。これが私の現在のアクションバーメニュー項目です:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/favorite"
    android:showAsAction="always"
    android:title="Happy"/>
<item
    android:id="@+id/share_button"
    android:icon="@drawable/share"
    android:showAsAction="always"
    android:title="Share"/>
<item
    android:id="@+id/hola_button"          
    android:showAsAction="always"
    android:title="Hola"/>
<item
    android:icon="@drawable/more_actions"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/back_button"
            android:icon="@drawable/back"
            android:title="back"/>
        <item
            android:id="@+id/forward_button"
            android:icon="@drawable/forward"
            android:title="forward"/>
        <item
            android:id="@+id/refresh_button"
            android:icon="@drawable/refresh"
            android:title="refresh"/>          
    </menu>
 </item>
 </menu>
4

3 に答える 3

1

これは、リストビューとカスタム リストヘッダーを備えたカスタマイズされたダイアログのように見えます

また

ダイアログ内の上部に 3 つのボタンがある単純なレイアウトの下のリストビュー。

アクションバーのメニュー項目のクリックで同じことを表示できます。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getSupportMenuInflater().inflate(R.menu.menu_items, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.show_dlg:

    // Show your custom dialog
        break;
    }

    return super.onOptionsItemSelected(item);

}

また、このチュートリアルは、カスタム メニューを拡張するためのリファレンスとして役立ちます http://www.codeproject.com/Articles/173121/Android-Menus-My-Way

于 2013-01-22T18:39:02.083 に答える
1

編集:

スクリーンショットのオーバーフロー メニュー

この例は、OverflowMenu としてのものです (ABS はオーバーフロー テーマを捨てたため)。あらゆる種類のレイアウトの組み合わせを膨らませることができます。このクラスは PopUpWindow から拡張され、一般的な onCreateOptions を使用しません。ABS-CustomView と PopUpWindow を使用してメニューを作成します。

Android リファレンスから: 任意のビューを表示するために使用できるポップアップ ウィンドウ。ポップアップ ウィンドウは、現在のアクティビティの上に表示されるフローティング コンテナーです。

レイアウトは、要求されたレイアウトに似ています。このビューは ActionBar に固定されていますが、好きな場所に表示できます。ポップアップ ウィンドウは、すぐに使用できる多くの表示機能をサポートしています。

カスタマイズ可能なオーバーフロー メニュー

public class OverflowMenu extends PopupWindow {

private View mContentView;

public OverflowMenu(Context context, int resourceId) {
    super(context);
    mContentView = LayoutInflater.from(context).inflate(resourceId, null);
    setContentView(mContentView);
    setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    setWidth(WindowManager.LayoutParams.WRAP_CONTENT);

    // Handle touchevents
    setOutsideTouchable(true);
    setFocusable(true);
    setBackgroundDrawable(new BitmapDrawable());
}

/**
 * Attach the OverflowMenu View to the ActionBar's Right corner
 * @param actionBarView
 */
public void show(View actionBarView) {
    int x = actionBarView.getMeasuredWidth() - mContentView.getMeasuredWidth();
    showAsDropDown(actionBarView, x, 0);
}

/**
 * Return mContentView, 
 *  used for mContentView.findViewById();
 * @return
 */
public View getView(){
    return mContentView;
}
}

主な活動

public class MainActivity extends SherlockActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mai n);

    final ActionBar actionBar = getSupportActionBar();
    actionBar.setCustomView(R.layout.actionbar);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

    final OverflowMenu menu = new OverflowMenu(this,R.layout.menu_overflow);

    final ImageButton overflowBtn = (ImageButton) actionBar.getCustomView().findViewById(R.id.actionbar_overflow);
    overflowBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            menu.show(actionBar.getCustomView());
        }
    });
  }


 }
于 2013-01-22T21:21:10.997 に答える
0

次のような方法でメニュー項目をページに追加できます。

OptionCommand command = new OptionCommand();
command.setActionView(view);
command.setIcon(canvas.getContext().getResources().getDrawable(android.R.drawable.ic_menu_search));
command.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
canvas.getActivity().getOptionCommands().add(command);
于 2013-01-17T17:07:44.917 に答える