3

自分のスタイルのメニューアイテムを作成しようとしていますが、まだ作成できていません。

私がそれをするいくつかの方法があります: 1)

@Override 
public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.drawable.menu, menu);
    return result;      
}

menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add"
          android:icon="@android:drawable/ic_menu_add"
          android:title="@string/add" />
</menu>

2)

@Override 
public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    MenuItem m1 = menu.add(0, 0, 0, R.string.add);
    m1.setIcon(android.R.drawable.ic_input_add);
    return result;      
}

しかし、どちらの場合も、私のメニュー項目は「標準」のままです。サイズや場所などを変更するにはどうすればよいですか?

4

1 に答える 1

1

まず、独自のメニュースタイルを定義することはお勧めしません。私の個人的な意見では、これは変更すべきものではありません。また、ICS +デバイスには専用のメニューボタンがないため、役に立たないでしょう。

ただし、これを行う場合は、デフォルトの動作を変更できないため、既存のメニュー設定から離れる必要があります。

行う必要があるのは、アクティビティの既存のレイアウト内に非表示のレイアウトを作成してから、getKeyDownイベントにフックして、このレイアウトを非表示/表示することです。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        myCustomMenu.toggleVisibility();
        return true;
    } else {
        return super.onKeyDown(keyCode, event);
    }       
}

メソッドは次のようになります

public void toggleVisibility() {
    LinearLayout myCustomMenuLayout = (LinearLayout) findViewById(R.id.myCustomMenu);
    if (myCustomMenuLayout.getVisibility() == View.GONE) {
        myCustomMenuLayout.setVisibility(View.VISIBLE);
    } else {
        myCustomMenuLayout.setVisibility(View.GONE);
    }
}

レイアウトに関しては、別のレイアウトで作成し、以下のように参照するのがおそらく最善です。これは、コードを重複させることなく複数回参照できるようにするためです。

<include android:id="@+id/myCustomMenu" layout="@layout/customMenu" visibility="gone">

そこから、メニューにデータを入力し、onclicklistenersなどを定義する必要があります

于 2012-07-16T20:20:24.973 に答える