2016-08-10 4 views
0

アンドロイドのアプリケーションでコンテキストメニューを使用して、ユーザーにフィルタの選択を促します。関連するコードは次のとおりoption Menuアイテムの背景色を設定するコンテキストの背景色を指定する方法メニュー

<item name="android:itemBackground">@color/someColor</item> 

:私はラインを使用のstyles.xmlファイルで

TextView someView = (TextView) findViewById(id.some_view); 
registerForContextMenu(someView); 

... 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Select a Filter"); 

    menu.add(0, 0, 0, "Filter1"); 
    menu.add(0, 1, 1, "Filter2"); 
    menu.add(0, 2, 2, "Filter3"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) 
{ 
    if (item.getItemId() == 0) 
    { 
     ... 
    } 
    else 
    { 
     ... 
    } 
    return true; 
} 

。私は彼らにActionbarと同じ色を持たせたいと思います。しかし、効果は、context Menuも同じ色を取ります。

質問context MenuMenuアイテムまたは全体のコンテキストメニューの背景色を指定する方法は私の質問です。個別に設定する方法はありますか?代わりにoption Menuアイテムの背景色をcontext Menuに影響を与えずに別の方法で設定することはできますか?

答えて

1

は、残念ながらあなたは、コンテキストメニューをカスタマイズすることはできませんが、Dialogを作成し、このよう.something拡張子ContextMenuとしてそれを使用することができます。

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
    final Dialog dialog = new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.menu_layout); 

    LinearLayout ll_menu=(LinearLayout)findViewById(R.id.ll_menu); 

    //add some TextView or ImageView to ll_menu as menu items 


    dialog.show(); 
} 

menu_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 

    <LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/ll_menu" 
    > 


    </LinearLayout> 

</ScrollView> 
関連する問題