ActionBar上の不確定なプログレスバーのスタイリング

アクションバーにprogressBarを設定したいが、

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  
setProgressBarIndeterminateVisibility(true);

onCreate メソッドでは、中間サイズのprogressBar(48dip x 48dip)が生成されます。 progressBarのサイズを変更したいのですが、それを行う方法がわかりません。私を助けてくれますか?

18

7 答え

ActionBarに適用する独自のスタイルを作成する必要があります。 Android Developers Blog に関するこのチュートリアルは素晴らしいです。中間進行状況バーをスタイルするには、 indeterminateProgressStyle Widget.ProgressBar.Small を使用してみてください。ここに簡単な例があります。






28
追加された
いくつかのpull-to-refreshライブラリ( github.com/chrisbanes/ActionBar-PullToRefresh )?
追加された 著者 android developer,
それは動作しません...アクションバーのプログレスバーはまだ同じです...
追加された 著者 Matroska,
私がactionbarsherlockとの互換性の問題があっても動作します
追加された 著者 Matroska,
ActionBarSherlockには、この属性 @ style/IndeterminateProg‌ ress があります。私は今とても幸せです:)ありがとう
追加された 著者 Matroska,
私は私の反応を編集した。それは今働く。申し訳ありませんが、以前はテストしていませんでした。小さなProgressBarを編集する場合は、代わりに "Widget.ProgressBar.Small"を使用してください。 :)
追加された 著者 adneal,
適切なサイズとパディングを持つプログレスバーが必要な場合は、私の解決策をここで確認してください。 stackoverflow.com/questions/15519818/…
追加された 著者 petrnohejl,
非常に便利な答えです。 btw @ drawable/ic_launcher は必要ありません。異なるドロウアブルが必要な場合にのみ、これを設定する必要があります。
追加された 著者 JJ86,
それは私にとってはうまくいったが、私はActionBarIPSのparent = "@ android:style/Widget.Holo.Light.ActionBar.Solid.Inv‌ erse"を作成し、android:background項目を削除してmy暗いアクションバー。
追加された 著者 elmango,

ActionBarのアニメーション化されていないアニメーションのプログレスバーアイコン:

res/values/styles.xmlを定義します(この例ではSherlockライブラリを使用して古いAndroidバージョンでアクションバーを提供しています。もしあなたがSherlockを使用していない場合は、特権を持つ親を使ってカスタムスタイルを定義する必要があります)。

<?xml version="1.0" encoding="utf-8"?>

    

    

     

2. res/drawable/progress_indeterminate_custom.xmlを定義します。

<?xml version="1.0" encoding="utf-8"?>


    
    
     
    


3.Above code uses 2 images (ic_progress_logo1 and ic_progress_logo2) as custom progress indeterminated icon. You can use as much images/drawables as you want by adding new item elements. Also, you can apply differents effects/animations. More info here: Animation Resources

AndroidManifest.xmlを使用して作成した4.Applyスタイル:


    
        
            
            
        
    

あなたのアニメーションのカスタム進行の不確定アイコンを楽しむ:D

15
追加された
リンクだけでなく、完全なソリューションを提供することもできます。ありがとう。
追加された 著者 Valentin Despa,
私は答えを編集し、お楽しみください!
追加された 著者 Alberto M.,

私は actionbarsherlock を使用していなかったので、これらのソリューションすべてで苦労しました。私はVlasto Benny Lavaの答えを利用しましたが、最初は私にとってはうまくいきませんでした。

ここで私が一歩一歩したことがあります:

1) open your styles.xml file, it should be under /res/values/styles.xml. If it doesn't exist create it.

2) paste in:


    

    

     

私が出会ったキャッチヤの1つは、テーマ名「AppTheme」を使うことができません。さもなければ、上書きは機能しません。私は "MyTheme"を使いました。このテーマはHoloを使用しているため、下の画像に示すように黒いActionBarがあります。白い色のアクションバーを使用する場合は、もちろん android:Theme.Holo android:Theme.Holo.Light などに置き換えてください。

3) Edit AndroidManifest.xml.

your must contain android:theme="@style/myTheme" so that the application is using your override styles from styles.xml

つまり、私のマニフェストアプリケーションのタグファイルは次のようになります。


既存のプログレスpngのサイズを縮小するだけで、イメージをエクスポートしてドロアブルの場所などに移動する必要はありません。

私の見た目は以下の通りです。アイコンの大きさは私にとって完璧です。

enter image description here

8
追加された

To make the ProgressBar on ActionBar smaller, what you want to do is override Widget.Holo.ProgressBar.Small like this






あなたが望むものにサイズを設定してください。

2
追加された

ActionBarSherlockでは、Widget.ProgressBar.Smallを親子化することで不確定な進捗状況を変更することができます。これはSherlockなしでも機能します。

SDKのandroid-15 resフォルダからドロアブルを取り出したので、必ずprogress_small_white.xmlと関連リソースを取得してください。

 <?xml version="1.0" encoding="utf-8"?>
 
     

     

       
 
2
追加された
うまく動作しますが、必然的に動作しません。 progress_small_whiteアニメーションをどのように適用しますか?
追加された 著者 urSus,
アクションアイテムをクリックすると、実際の進行状況バーレイアウトに置き換えることができます:アンドロイド:layout_width = "wrap_content" android:layout_height = "wrap_content"アンドロイド:重力= "center"> refreshItem.setActionView(myProgressBarFrameLaoutInflated );
追加された 著者 ThanksMister,

Create メソッドにコードの下に貼り付け、中間モードでバーの下を実行します。
進行状況のパーセンテージを表示する場合は、 progressBar.setIndeterminate(true); メソッドをコメントし、 progressBar.setProgress(65)メソッドのコメントを解除し、

       progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
       progressBar.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 24));
     //progressBar.setProgress(65);
     //progressBar.setBackgroundDrawable(getResources().getDrawable(R.color.lock_background_greeen));
      progressBar.setIndeterminate(true);

   //retrieve the top view of our application
      final FrameLayout decorView = (FrameLayout) getWindow().getDecorView();
      decorView.addView(progressBar);


      ViewTreeObserver observer = progressBar.getViewTreeObserver();
      observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            View contentView = decorView.findViewById(android.R.id.content);
            progressBar.setY(contentView.getY() - 10);

            ViewTreeObserver observer = progressBar.getViewTreeObserver();
            observer.removeGlobalOnLayoutListener(this);
        }
    });
1
追加された

古いバージョンのAndroid SDKと互換性がなければならないので、私はそれをシンプルに保つ必要がありました。

Styles.xml

 

AndroidManifest.xml

android:theme="@style/TallerTitleBarDialogThemeStyle"

私が調整する必要がある活動のために。

0
追加された