18

アクションバーにprogressBarを配置したいのですが、

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

ononCreateメソッドは中サイズのprogressBar(48dip x 48dip)を生成します。プログレスバーのサイズを変更したいのですが、変更方法がわかりません。手伝ってくれませんか。

4

7 に答える 7

28

ActionBarに適用するには、独自のスタイルを作成する必要があります。これに関するすばらしいチュートリアルがAndroid開発者ブログにあります。中間プログレスバーのスタイルを設定するには、とを使用してみてindeterminateProgressStyleくださいWidget.ProgressBar.Small。これが簡単な例です。

<style name="YourTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBarIPS</item>
</style>

<style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar">
    <item name="android:indeterminateDrawable">@drawable/ic_launcher</item>
</style>

<style name="ActionBarIPS" parent="@android:style/Widget.ActionBar">
    <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item>
    <item name="android:background">@color/white</item>
</style>
于 2012-02-06T15:41:54.730 に答える
15

ActionBarのスタイル付きアニメーション不確定プログレスバーアイコン:

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTheme" parent="Theme.Sherlock">
        <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
        <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    </style>

    <style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
        <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item> 
        <item name="indeterminateProgressStyle">@style/IndeterminateProgress</item> 
    </style>

    <style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar.Small"> 
       <item name="android:indeterminateDrawable">@drawable/progress_indeterminate_custom</item> 
    </style> 
</resource>

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

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <rotate
        android:drawable="@drawable/ic_progress_logo1"
        android:fillAfter="true"
        android:fromDegrees="-180"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="180" />
    </item>
     <item>
    <rotate
        android:drawable="@drawable/ic_progress_logo2"
        android:fillAfter="true"
        android:fromDegrees="180"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="-180" />
</item>
</layer-list>

3.上記のコードは、2つの画像(ic_progress_logo1とic_progress_logo2)をカスタム進行状況不定アイコンとして使用します。新しいアイテム要素を追加することで、必要な数の画像/描画可能オブジェクトを使用できます。また、さまざまな効果/アニメーションを適用できます。詳細はこちら:アニメーションリソース

4.AndroidManifest.xmlを使用して作成したスタイルを適用します。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    android:name=".application.MyApplication">
    <activity
        android:name=".activities.MyActivity"
        android:label="@string/app_name"
        android:theme="@style/MyTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

5.アニメーション化されたカスタム進捗不確定アイコンをお楽しみください:D

于 2012-11-14T18:40:45.143 に答える
8

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

これが私が段階的に行ったことです:

1) styles.xmlファイルを開きます。これは。の下にあるはずです/res/values/styles.xml。存在しない場合は作成してください。

2) 貼り付け:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="myTheme" parent="android:Theme.Holo">
        <item name="android:actionBarStyle">@style/ActionBar.MyStyle</item>
    </style>

    <style name="ActionBar.MyStyle" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:indeterminateProgressStyle">@style/ActionBarProgressBar.MyStyle</item>
    </style>

    <style name="ActionBarProgressBar.MyStyle" parent="@android:style/Widget.Holo.ProgressBar.Small">
        <item name="android:minWidth">28dp</item>
        <item name="android:maxWidth">28dp</item>
        <item name="android:minHeight">28dp</item>
        <item name="android:maxHeight">28dp</item>
    </style> 
</resources>

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

3)編集しAndroidManifest.xmlます。

アプリケーションがからのオーバーライドスタイルを使用するように、を<application>含める必要がありますandroid:theme="@style/myTheme"styles.xml

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/myTheme"
    android:name="Application Name Here" >

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

これが私のものです。アイコンのサイズは私にぴったりです。

ここに画像の説明を入力してください

于 2014-03-11T01:11:58.773 に答える
2

ActionBarSherlockの場合、Widget.ProgressBar.Smallをペアレント化することで、不確定な進行状況を変更できます。これは、Sherlockがなくても機能するはずです。

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

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <style name="Dark" parent="Theme.Sherlock">
         <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
         <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
     </style>

     <style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar">
         <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item> 
         <item name="indeterminateProgressStyle">@style/IndeterminateProgress</item> 
     </style>

      <style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar.Small"> 
        <item name="android:indeterminateDrawable">@drawable/progress_small_holo</item> 
    </style> 
 </resource>
于 2012-03-31T00:23:12.317 に答える
2

ActionBarのProgressBarを小さくするWidget.Holo.ProgressBar.Smallには、次のようにオーバーライドします。

<style name="Theme.MyStyle" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="actionBarStyle">@style/ActionBar.MyStyle</item>
    ...
</style>

<style name="ActionBar.MyStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    ...
    <item name="android:indeterminateProgressStyle">@style/ActionBarProgressBar.MyStyle</item>
    ...
</style>

<style name="ActionBarProgressBar.MyStyle" parent="@android:style/Widget.Holo.ProgressBar.Small">
    <item name="android:minWidth">28dp</item>
    <item name="android:maxWidth">28dp</item>
    <item name="android:minHeight">28dp</item>
    <item name="android:maxHeight">28dp</item>
</style>

サイズを好きなように設定します。

于 2014-01-23T02:03:41.430 に答える
1

メソッドに以下のコードを貼り付け、on 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);
        }
    });
于 2014-07-25T11:19:44.340 に答える
0

古いバージョンのAndroidSDKと互換性がある必要があるため、シンプルで使用する必要がありました。

Styles.xml

 <style name="TallerTitleBarDialogThemeStyle" parent="@android:style/Theme.Dialog">
    <item name="android:windowTitleSize">36dp</item>
</style>

AndroidManifest.xml

android:theme="@style/TallerTitleBarDialogThemeStyle"

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

于 2015-12-29T18:22:58.137 に答える