2011-12-22 9 views
6

私のAndroidアプリケーションでは、android developer blogなどのヒントに沿ってActionBarをカスタマイズしています。私はActionBar上の特定のメニュー項目を強調表示したいと思います。現在表示されているフラグメント(実際に追加されたフラグメント)に特に適用できるため、背景色が異なります。しかし、私はこれを行うことができないという兆候は見当たりませんでした。出来ますか?もしそうなら、どのように?ActionBarの特定のメニュー項目の外観とスタイルが異なります

+0

あなたはわずかに異なるアイコンを使用する方が簡単ではないでしょうよろしいです..デフォルトのメニュー項目の実際のビューよりも代替ビューのよりように見えますか?あるいは独自のカスタムアクションビューまたは 'ActionProvider'を使って達成できるかもしれない他のフォアグラウンドの変更? – CommonsWare

+0

現在、これらはテキストであり、アイコンは理解しにくいでしょう。カスタムアクションビューまたはActionProviderの面では、私はそれを調べなければならないでしょう。 –

+0

あなたはアクションビュー/ 'ActionProvider'ルートを行く、少なくとも場合は、テキストの前景色を変更することができます。残念ながら、Androidは '' タグをサポートしていません... :-) – CommonsWare

答えて

12

だから私は今これを少しトリックで動作させるようにしました。ここでは主な落とし穴がonclicklistenerはそれを動作させるためにメニュー項目をアクションビューとして設定していないビューに設定しなければならないことであるフラグメントコード

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 

    menuItemCreateCart = menu.findItem(R.id.menuItemCreateCart); 
    if (menuItemCreateCart == null) { 
     menuItemCreateCart = menu.add(0, R.id.menuItemCreateCart, 0, R.string.Create); 
    } 

    TextView tv = new TextView(getActivity()); 
    tv.setText(R.string.Create); 
    tv.setTextColor(getResources().getColor(R.color.green)); 
    tv.setBackgroundColor(getResources().getColor(R.color.lightBlue)); 
    tv.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        createCart(); 
       } 
      } 
    ); 
    menuItemCreateCart.setActionView(tv); 

を行きます。このようにして、好きなことをすることができます。

はまた、あなたはそれがnullを返しますので、タイトルと、もともと設定ビューを取得するためにgetActionViewを使用することはできません。

+0

私のために働いた:) – Shivansh

関連する問題