0

Я следил за этим tutorial, чтобы положить в панель действий ProgressBar. Но вместо того, чтобы показывать индикатор выполнения, он показывает название пункта меню «working». Я удалил текст , а затем ничего не появляется. Мне нужно отобразить индикатор выполнения.ProgressBar в панели действий отображает текст вместо файла макета

Может ли кто-нибудь помочь мне понять, что я сделал не так?

Перед нажат:

enter image description here

во время 'освежит' стадии, когда индикатор выполнения должен быть показан.

enter image description here

Вот мой макет

<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); 
    } 
} 
+0

Вы пытались удалить заголовок? – Ekalips

+0

Да, я получаю сообщение об ошибке «Элементы меню должны отображать заголовок» –

ответ

-1

пытаются использовать всегда в действие это заставит панель действий отображать ее.

<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> 
+0

К сожалению, это не сработало. –

+0

Вы не хотите работать? –

+0

Я хочу, чтобы индикатор выполнения отображался без заголовка. –

 Смежные вопросы

  • Нет связанных вопросов^_^