样式不确定ActionBar上的进度条

我想在操作栏上设置progressBar但是设置

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

onCreate方法上产生一个中等大小的progressBar(48dip x 48dip)我想。 我想改变progressBar的大小,但我找不到如何做到这一点。 你能帮我吗?

Solutions Collecting From Web of "样式不确定ActionBar上的进度条"

您需要创建自己的样式才能应用于ActionBar。 在Android开发者博客上有一个很好的教程。 要设置中间进度条的样式,请尝试使用indeterminateProgressStyleWidget.ProgressBar.Small 。 这是一个简单的例子。

    

ActionBar上带有样式的ANIMATED不确定进度条图标:

1.define res / values / styles.xml(这个例子使用Sherlock库在旧的Android版本中提供动作栏,因此,如果你不使用Sherlock,你应该使用适当的父类来定义你的自定义样式):

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

2.define res / drawable / progress_indeterminate_custom.xml:

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

3.以上代码使用2个图像(ic_progress_logo1和ic_progress_logo2)作为自定义进度不确定图标。 您可以通过添加新的项目元素来使用尽可能多的图像/绘图。 此外,您可以应用不同的效果/animation。 更多信息: animation资源

4.使用AndroidManifest.xml创建的应用样式:

         

5.享受您的animation自定义进度不确定图标:D

我努力解决所有这些解决方案,因为我没有使用actionbarsherlock 。 我利用了Vlasto Benny Lava的答案,这对我来说最初并不适用。

这是我一步一步做的:

1)打开你的styles.xml文件,它应该在/res/values/styles.xml下。 如果它不存在则创建它。

2)粘贴:

      

我遇到过一个catchya,你不能使用主题名称“AppTheme”,否则覆盖将无效。 我用了“MyTheme”。 这个主题是使用Holo所以它有一个黑色的ActionBar,如下图所示。 如果你想要一个白色的动作栏,那么当然用android:Theme.Holo.Light等替换android:Theme.Holo.Light

3)编辑AndroidManifest.xml

你的必须包含android:theme="@style/myTheme"以便应用程序使用styles.xml覆盖样式

即,我的清单应用程序标记文件看起来像这样:

  

因为您只是缩小现有进度png的大小,所以无需导出任何图像并将其移动到可绘制位置等。

这是我的样子,图标的大小对我来说是完美的。

在此处输入图像描述

对于ActionBarSherlock,您可以通过为Widget.ProgressBar.Small设置父级来更改不确定的进度,这也可以在没有Sherlock的情况下工作。

我从SDK中的android-15 res文件夹中获取了drawable,确保获取progress_small_white.xml和相关资源。

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

要使ActionBar上的ProgressBar更小 ,你想要做的是覆盖Widget.Holo.ProgressBar.Small像这样

    

并将大小设置为您想要的任何值。

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

我必须与旧版Android SDK兼容,所以我必须保持简单和使用:

Styles.xml

   

AndroidManifest.xml中

 android:theme="@style/TallerTitleBarDialogThemeStyle" 

对于我需要调整的活动。