2012-01-30 2 views
30

ActionBar를 사용하고 있습니다. 제목 표시 줄에 새로 고침 진행률 회 전자를 넣고 싶습니다. 그렇지 않으면 숨길 수 있습니다. 가능한가요? :ActionBar에서 진행 상황 회 전자 (새로 고침)를 표시 하시겠습니까?

// My menu has a refresh item, but it shouldn't be visible on the 
// actionbar unless it's spinning. 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_refresh" 
    android:title="@string/refresh" 
    android:icon="@drawable/ic_action_refresh" /> 
</menu> 

... 

// When I need to show some work being done on my activity, 
// can I somehow now make the spinner associated with the 
// refresh item become visible on the action bar? 
getActionBarHelper().setRefreshActionItemState(true); 

"진행 중"/ 회전하지 않는 한 ActionBar에 표시하고 싶지 않습니다. 이 ActionBarSherlock의 출신

감사 전화에서 게시

답변

75

사과없는 코드 태그, ...

(당신이 그것을 건너없는 한 경우 구글은 사전에 벌집 액션 바 지원을 허용하는)

// This has to be called before setContentView and you must use the 
// class in android.support.v4.view and NOT android.view 

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

주요 활동에서 onCreate에서

은 작업 표시 줄에서/숨기기 진행률을 표시합니다. 당신이 ActionBarActivity에서 확장되면 ......... 당신이 거짓/단지 사실이 아니다, FALSE는 Boolean.TRUE /를 사용해야합니다 ActionBarSherlock의와

if (getSupportLoaderManager().hasRunningLoaders()) { 
    setProgressBarIndeterminateVisibility(Boolean.TRUE); 
} else { 
    setProgressBarIndeterminateVisibility(Boolean.FALSE); 
} 
+0

확인 덕분에 거기에서 조금 파고 들겠습니다. SDK와 함께 제공된 샘플은 처음에 생각한만큼 좋지 않습니다. 그들은 Window.FEATURE_CUSTOM_TITLE을 사용하고 있습니다.이 기능은 사용자가 원하는대로 완전히 그려지기 전에 제목 표시 줄을 보여주는 효과가 있습니다. 전문가답지 않게 보입니다. 한숨. – user291701

+0

@Jake Wharton 나는 이것을 해결하려고 노력하고있다. '새로 고침 '버튼을 누르면 콜백'onOptionsItemSelected'가 호출됩니다. MartinS가 제안한대로 어디에서 setProgressBarIndeterminateVisibility를 호출 할 것인가? –

+19

ActionBarSherlock을 사용하는 경우 setSupportProgressBarIndeterminateVisibility()를 사용해야합니다. 그렇지 않으면 진행 표시기가 항상 회전하여 그 이유를 알 수 없습니다. –

3

을 주목,이 시도 :

public class MainActivity extends ActionBarActivity { 

    boolean showUp=true; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.activity_main); 
     setSupportProgressBarIndeterminateVisibility(Boolean.TRUE); 

     Button b = (Button) findViewById(R.id.myButton); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if(showUp){ 
        setSupportProgressBarIndeterminateVisibility(Boolean.FALSE); 
       }else { 
        setSupportProgressBarIndeterminateVisibility(Boolean.TRUE); 
       } 
       showUp=!showUp; 
      } 
     }); 
} 
+0

"Window"는 패키지에 속해 있습니까? – Hesam

+3

지원 라이브러리 v21에서 지원하지 않으므로 참조하십시오. : //stackoverflow.com/questions/26443490/appcompat-show-progress-in-action-bar-causes-npe and https://chris.banes.me/2014/10/17/appcompat-v21/#comment- 1642002459 – indyfromoz

관련 문제