Java Actionbar中的ProgressBar显示文本而不是布局文件

Java Actionbar中的ProgressBar显示文本而不是布局文件,java,android,android-actionbar,android-progressbar,android-menu,Java,Android,Android Actionbar,Android Progressbar,Android Menu,我随后在操作栏中放置了一个ProgressBar。但它不显示进度条,而是显示菜单项的标题“正在工作”。我已经删除了文本正在工作,然后没有显示任何内容。我只想显示进度条 有人能帮我理解我做错了什么吗? 按下前: 在“刷新”阶段,应显示进度条 这是我的布局 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@android:style/Widget.Acti

我随后在操作栏中放置了一个
ProgressBar
。但它不显示进度条,而是显示菜单项的标题“正在工作”。我已经删除了文本正在工作,然后没有显示任何内容。我只想显示进度条

有人能帮我理解我做错了什么吗?

按下前:

在“刷新”阶段,应显示进度条

这是我的布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             style="@android:style/Widget.ActionButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content">

    <ProgressBar
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_gravity="center"
        android:focusable="false"/>

</FrameLayout>

这是我的菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/master_refresh_action"
        android:icon="@drawable/ic_refresh"
        android:title="Refresh"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/pb_master_refresh"
        android:actionLayout="@layout/refresh_menuitem"
        android:title="working"
        app:showAsAction="always"/>
</menu>

以及我活动中的代码:

    //USED FOR MENU ITEM REFRESH
    private static final int STATE_IDLE = 0;
    private static final int STATE_WORKING = 1;
    private int mState;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_master);

        mToolbar = (Toolbar) findViewById(R.id.masterToolBar);
        setSupportActionBar(mToolbar);
        ab = getSupportActionBar();
        ab.setDisplayHomeAsUpEnabled(true);
        ab.setTitle("Loading");

        mState = STATE_IDLE;

    }


@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        invalidateOptionsMenu();
        getMenuInflater().inflate(R.menu.menu_master, menu);
       // itemBtnRefresh = menu.findItem(R.id.master_refresh_action);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.master_refresh_action:
                refreshData();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        MenuItem refresh = menu.findItem(R.id.master_refresh_action);
        MenuItem progressBar = menu.findItem(R.id.pb_master_refresh);

        switch (mState) {
            case STATE_IDLE:
                refresh.setVisible(true);
                progressBar.setVisible(false);
                break;
            case STATE_WORKING:
                refresh.setVisible(false);
                progressBar.setVisible(true);
                break;
            default: // Should never happen!
                refresh.setVisible(true);
                progressBar.setVisible(false);
                break;
        }

        return super.onPrepareOptionsMenu(menu);
    }



       private void setState(int state) {
            mState = state;
            invalidateOptionsMenu();
        }


    private SomeAsyncTask <>{

    OnPreExecute{
    setState(STATE_WORKING);
    }

    OnPostExecute{
    setState(STATE_IDLE);
    }
}
//用于菜单项刷新
私有静态最终int状态_IDLE=0;
私有静态最终int状态_工作=1;
私人国家;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_master);
mToolbar=(工具栏)findviewbyd(R.id.masterToolBar);
设置支持操作栏(mToolbar);
ab=getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(真);
ab.setTitle(“装载”);
mState=空闲状态;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
无效操作菜单();
getMenuInflater().充气(R.menu.menu\U主菜单,菜单);
//itemBtnRefresh=menu.findItem(R.id.master\u refresh\u动作);
返回super.onCreateOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.master\u刷新\u操作:
刷新数据();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
@凌驾
公共布尔值OnPrepareOptions菜单(菜单){
MenuItem refresh=menu.findItem(R.id.master\u refresh\u action);
MenuItem progressBar=menu.findItem(R.id.pb\u master\u刷新);
开关(mState){
案例状态_空闲:
refresh.setVisible(true);
progressBar.setVisible(false);
打破
案例状态_工作:
refresh.setVisible(false);
progressBar.setVisible(true);
打破
默认值:永远不会发生!
refresh.setVisible(true);
progressBar.setVisible(false);
打破
}
返回super.onPrepareOptions菜单(菜单);
}
私有无效设置状态(int状态){
mState=状态;
无效操作菜单();
}
私有异步任务{
预先执行{
设置状态(工作状态);
}
OnPostExecute{
设置状态(空闲状态);
}
}

尝试使用始终处于活动状态,它将强制操作栏显示它

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/master_refresh_action"
        android:icon="@drawable/ic_refresh"
        android:title="Refresh"
        app:showAsAction="never"/>
    <item
        android:id="@+id/pb_master_refresh"
        android:actionLayout="@layout/refresh_menuitem"
        android:title=""
        app:showAsAction="always"/>
</menu>


您是否尝试删除标题?是的,我收到错误“菜单项应显示标题”我只希望进度条不显示标题。。。。不知道你为什么要我隐藏刷新图标。。。。那部分有效。问题是当pb_master_刷新布局显示时,它好像没有膨胀。请留出刷新和检查的空间。是的,您的建议都没有帮助。谢谢你!