2013-01-11 3 views
28

私はちょうどコードによってActionBar MenuItemの表示を調整したいと思います。私のMenuItemのgetActionView()はnullを返します

残念ながら、getActionViewは常にnullを返すようです。

マイコード:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = this.getSupportMenuInflater(); 
    inflater.inflate(R.menu.folder, menu); 
    return super.onCreateOptionsMenu(menu); 

} 

public boolean onPrepareOptionsMenu(final Menu menu) { 
    MenuItem menuFolder = menu.findItem(R.id.menu_folder); 
    Log.i("", "* onPrepareOptionsMenu *" + menuFolder); 
    Log.i("", "* getActionView *" + menuFolder.getActionView()); 

ログは次のとおりです。

01-11 22:13:42.884:I /(7893):* onPrepareOptionsMenu * com.actionbarsherlock.internal.view。 [email protected]

1月11日22:13:42.884:I /(7893):* getActionView *ヌル

は、任意の助けのためにたくさんの感謝

編集:setActionViewからカスタムactionViewがあるかどう

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

    <item 
      android:id="@+id/menu_folder" 
      android:icon="@drawable/ic_menu_archive" 
      android:showAsAction="always"/> 
</menu> 
+0

'R.menu.folder'と表示してください。 –

+0

が質問に追加されました –

答えて

28

getActionView()のみ動作します。

+6

MenuItemのビューにアクセスする方法はありますか? –

+0

に依存します。このボタンだけを微調整するか、すべてのボタンを微調整したいですか?それがこのボタンの場合は、おそらくカスタム表示を設定する必要があります。すべてのボタンがある場合は、おそらくスタイルを使用するべきです。あなたは何を変えようとしていますか? –

+2

アプリケーションに新しいコンテンツがあるときにアイコンに「バッジ」を入れたいので、この小さなカウンタを追加するにはビューが必要です –

25

私にとっては、解決策は、アンドロイドの代わりにアプリ名前空間を使用することです。

app:actionViewClass="android.support.v7.widget.SearchView"

それを宣言することを忘れないでください: xmlns:app="http://schemas.android.com/apk/res-auto"

+0

actionLayout属性を使用してカスタムレイアウトを設定することもできます。私の場合、私は独自のxmlで定義したSpinnerを使用していました。 –

21

あなたが

android:actionLayout="@layout/menu_actionbar_basket" 

を使用する場合は、必ず希望トリック 厥

app:actionLayout="@layout/menu_actionbar_basket" 

を使用する必要がありますnullを取得するデフォルトツールバーの例外。

+0

@Smartizに感謝、あなたは時間を節約できます;) – immodi

3

デバッグビルドが問題なく動作し、リリースビルドのみで問題が発生した場合、これはプロguard構成の可能性があります。あなたのアプリケーションでproguardを有効にした場合、proguard-rules.proに以下の行を追加してください。

-keep class android.support.v7.widget.SearchView { *; } 
関連する問題