2

Android用のカスタムメニューを作成する必要があります。しかし、どこから始めればよいかわかりません。さまざまなアプローチを見てきましたが、私が見つけた最良の方法は、透明な背景を持つ新しいアクティビティを作成することです。メニューは画面の右側に小さな列として開く必要がありますが、他のレイアウト/アクティビティ/ビューを単に「オーバーレイ」するだけです。よくわからないのは、このアクティビティをメニューとして作成し、背景を透明に設定した場合、ユーザーがアクティビティのボタンを押して「オーバーレイ」するとどうなるかということです。メニューアクティビティはどうなりますか。が消え、アクティビティがクリックイベントをトリガーしますか?..

前もって感謝します!

4

2 に答える 2

2

ほとんど透明な背景といくつかのボタンを備えた別のアクティビティはオプションです。でそのアクティビティを呼び出しstartActivityForResultます。ボタンのハンドラーで、押されたボタンを示し、「メニュー」アクティビティを閉じるためにsetResult呼び出します。finish()次に、「トリガーされた」メニューのアクティビティonActivityResultで、返されたコードを確認する場所をオーバーライドし、対応するアクションを実行します。

主な活動:

@Override
public void onCreate(Bundle bdl) {
    ...

    findViewById(R.id.button_menu).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            Intent i = new Intent(MenuActivity.class);
            startActivityForResult(i, REQUEST_MENU);
        }
    }

    ...
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == REQUEST_MENU) {
        switch(resultCode) {
            case MENU_ITEM_1:
                ...
                break;
            case MENU_ITEM_2:
                ...
                break;
            case MENU_ITEM_3:
                ...
                break;
            default:
                ...
    }
}

そしてあなたのメニュー活動で:

@Override
public void onCreate(Bundle bdl) {
    ...

    findViewById(R.id.menu_option_1).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }

    findViewById(R.id.menu_option_2).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }

    findViewById(R.id.menu_option_3).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }
    }

    ...
}
于 2013-02-25T12:42:51.367 に答える
1

この目的のために、PopupWindowまたはカスタムダイアログを使用できます。dialog.setCanceledOnTouchOutside(boolean)を設定して、外部クリックの動作を選択します。また、メニューをレイアウトするには、レイアウトパラメータをPopupWindowまたはカスタムダイアログに設定するだけです。このような操作では、アクティビティを開始する必要はありません。

于 2013-02-25T14:36:17.117 に答える