无法使用Holoeverywhere中的ActionBarCompat将ActionView添加到Actionbar

时间:2013-10-09 17:27:40

标签: android android-actionbar actionview android-actionbar-compat

我已在项目中更新了holoeverywhere版本,因此我不再使用ActionBarSherlock(ABS),而是使用ActionBarCompact(ABC)

我遇到的问题是当使用MenuItemCompat.getActionView(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解释的方法,但没有成功

提前致谢。

1 个答案:

答案 0 :(得分:4)

我认为问题在于ABC不支持自定义ActionLayouts。我找到了一个faced a similar problem which he resolved successfully的人。在添加SearchView时,请注意他使用了app:actionViewClass。您可以尝试使用app:actionLayout并查看它是否适合您?