0

これはtutorialに続いてProgressBarをアクションバーに配置しました。しかし、プログレスバーを表示する代わりに、メニュー項目のタイトル「作業中」を表示します。テキストを削除しましたと表示され、何も表示されません。進捗バーだけを表示したい。Actionbarの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

私は、プログレスバーをタイトルなしで表示したいだけです。 –

関連する問題