0

我尝试将操作栏的图标更改为onOptionsItemSelected(MenuItem)方法中的进度条。

    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    case R.id.progressitem2:
        mProgress = item;
        mProgressCreate = mProgress;
        mProgress.setActionView(R.layout.progress);
        mLayout.removeView(mTable);
        // Execute code that change mTable again.
        return true;
    }

进度.xml 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:addStatesFromChildren="true"
              android:focusable="true"
              android:paddingLeft="4dp"
              android:paddingRight="4dp"
              android:gravity="center" >
    <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusable="true"
            style="@android:style/Widget.ProgressBar.Small"/>

</LinearLayout> 

操作栏是这样创建的:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.actionbar, menu);
    mProgress = menu.getItem(0);
    mProgressCreate = mProgress;
    return true;
}

action_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/progressitem2" 
            android:icon="@drawable/ic_action_refresh"
            android:title="Reload"
            android:showAsAction="ifRoom|withText"
            android:visible="true" />
</menu>

这很好用。单击操作栏图标后会显示进度图标。

我尝试保留原始操作栏符号的引用,mProgressCreate并尝试在方法末尾添加操作视图onCreate()

mProgress.setActionView(mProgressCreate.getActionView());

但这不起作用...

这里有什么问题?

问候, 桑德罗

4

1 回答 1

0

我找到了解决方案。invalidateOptionsMenu()在我重置动作视图之前我只是忘记打电话了mProgress.setActionView(mProgressCreate.getActionView());

invalidateOptionsMenu();
mProgress.setActionView(mProgressCreate.getActionView());

一切正常:-)。

于 2012-09-20T07:27:25.843 回答