2
添加使用ActionBarCompat一對的ActionView ActionBar的

我已經更新holoeverywhere版本在我的項目,所以我不使用MenuItemCompat.getActionView時再使用ActionBarSherlock(ABS),但ActionBarCompact(ABC)無法從Holoeverywhere

我的問題(aMenuItem)我總是得到一個空值。

確切的代碼我已經是:

public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.dashboard_menu, menu); 

_itemNotifications = menu.findItem(R.id.notifications); 
_containerViewItemNotifications = (LinearLayout) MenuItemCompat.getActionView(_itemNotifications); 
_viewItemNotifications = (TextView) _containerViewItemNotifications.findViewById(R.id.ActionViewDashboard); 
_containerViewItemNotifications.setOnClickListener(new OnClickListener() { 
    @SuppressLint("NewApi") 
    public void onClick(View v) { 
    if (android.os.Build.VERSION.SDK_INT >= 16) { 
     _viewItemNotifications.setBackground(getResources().getDrawable(R.drawable.qnotificacion_disbled)); 
    } else { 
     _viewItemNotifications.setBackgroundDrawable(getResources().getDrawable(R.drawable.qnotificacion_disbled)); 
    } 
    _viewItemNotifications.setText(R.string.empty); 
    onOptionsItemSelected(_itemNotifications); 
    } 
}); 

_itemAnotateResult = menu.findItem(R.id.menu_anotate_result); 

return super.onCreateOptionsMenu(menu); 
} 

其中MenuItemCompat.getActionView(_itemNotifications)始終是一個空值

我的XML菜單文件是這樣的:

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

<item 
    android:id="@+id/notifications" 
    android:actionLayout="@layout/actionview_dashboard" 
    android:title="@string/customize"   
    app:showAsAction="ifRoom"/> 
<item 
    android:id="@+id/menu_anotate_result" 
    android:title="@string/anotate" 
    android:visible="false" 
    app:showAsAction="ifRoom|withText"/> 

</menu> 

如何我能克服這個嗎?我試圖按照類似的方法來解釋Android的文檔上的SearchViewItem,但沒有成功

在此先感謝。

回答

4

我認爲問題在於ABC不支持自定義ActionLayouts。我發現一個人faced a similar problem which he resolved successfully。在添加SearchView時,請注意他使用了app:actionViewClass。你可以嘗試使用app:actionLayout並查看它是否適合你?

+2

解決!你提出的解決方案是正確的。就像將android:actionLayout更改爲app:actionLayout一樣簡單。謝謝 – anuf

+0

拯救了一天!此評論也有幫助! –

相關問題