2

私の Android アプリケーションでは、アイコンがよりよく表示されるように、オプション メニューの背景を白くしたいと考えています。これを行う多くのアプリを見てきましたが、これを行う方法がわかりません。

4

2 に答える 2

1

彼のリンクの答えはおそらくあなたを助けるでしょう. このサイトでは、さまざまな方法で回答が得られます。たとえば、メニュー項目で android:state_pressed=true およびその他のオプション (選択、フォーカス) を使用すると、項目の背景が白色で表示されます。

オプションメニューの背景色を変更するには?

于 2012-01-19T13:49:46.807 に答える
1

私は標準オプション メニューのファンではないので、常に ViewStubsを使用してカスタマイズされたメニューを作成します。メニュー バーをデザインする新しいレイアウトを作成し、それをレイアウト ファイルの ViewStub と統合して、メニューをスライドさせます。

サンプル Java コード:

public boolean onKeyDown( int keyCode, KeyEvent event ) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_MENU:
            mMenuPanel = ( ( ViewStub ) findViewById( R.id.stub_onoption ) ).inflate();
            // initialize buttons of your menu layout and define setOnClickListener()
            if( !menuVisible ) {
                constants.showPanel( this, mMenuPanel, true );
                menuVisible = true;
            } else {
                constants.hidePanel( this, mMenuPanel, true );
                menuVisible = false;
            }
            return true;
    default:
        break;
    }
}

public static void hidePanel( Context context, View panel, boolean slideDown ) {
    panel.startAnimation( AnimationUtils.loadAnimation( context, slideDown ? R.anim.slide_out : R.anim.slide_in_top ) );
    panel.setVisibility( View.GONE );
}

public static void showPanel( Context context, View panel, boolean slideUp ) {
    panel.startAnimation( AnimationUtils.loadAnimation( context, slideUp ? R.anim.slide_in : R.anim.slide_out_top ) );
    panel.setVisibility( View.VISIBLE );
}

このようにして、メニュー バー (背景ボタンなど) を完全にカスタマイズできます。

編集:これは、それを行う方法の大まかなアイデアです。初めて行う場合は、背景色を変更するだけで少し重くなるかもしれませんが、後でこの概念を使用して、さまざまなスライドイン効果など、さまざまな場面でメニューデザインを調整することができます。アプリケーションの設計、場所、サイズなどの変更。さらに、この種の概念は、オプションの検索バーやアプリ内通知 (ダイアログを使用したくない場合) にも使用できます。したがって、それを検討する価値は間違いありません。

于 2012-01-19T13:50:36.410 に答える