ProgressBar中的android:progressBarStyle属性是啥意思?

Posted

技术标签:

【中文标题】ProgressBar中的android:progressBarStyle属性是啥意思?【英文标题】:What's the meaning of android:progressBarStyle attribute in ProgressBar?ProgressBar中的android:progressBarStyle属性是什么意思? 【发布时间】:2011-05-16 09:15:24 【问题描述】:

我一直在查看 ProgressBar 类的文档并找到了这些属性:

android:progressBarStyle android:progressBarStyleHorizo​​ntal android:progressBarStyleLarge android:progressBarStyleSmall

我认为这四个参数应该是对某种风格的引用。那么问题来了,这些是干什么用的?进度条的样式是通过 android:style 属性和对全局样式属性的引用来设置的。

文档没有说任何有用的东西,搜索了网络,一无所获。

【问题讨论】:

【参考方案1】:

您提到的四个属性可以应用于ProgressBar 的样式,如下所示:

style="?android:attr/progressBarStyleHorizontal"

样式常量android:progressBarStyleHorizontal 是典型的增量进度条:

而其他三个是不同大小的同一个圆形进度条:

style="?android:attr/progressBarStyleSmall"

style="?android:attr/progressBarStyle"

style="?android:attr/progressBarStyleLarge"

更新:

根据adap的cmets:

这些是主题的属性 指向您可以使用的主题样式 进度指示器...它们不是 ProgressBar 本身的属性。

【讨论】:

文档的意思是它所说的,它只是不是非常冗长。 ;) 这些是主题的属性,指向可用于进度指示器的主题样式。它们的确切值可以因主题而异,这只是一个间接层。这个答案是正确的。将样式属性设置为其中之一。它们不是 ProgressBar 本身的属性。 @adamp:感谢您的澄清,我会更新我的答案以反映您的 cmets。 所以答案基本上是“它们不是 ProgressBar 本身的属性”。是的,我知道如何设置进度条的样式。 :) 我只是想知道,如果更改属性会发生什么变化,但是如果这些属性实际上不是属性,那么一切都会变得清晰。附言Android 文档的某些部分真的很烂。 它们属性,但它们是主题的属性,而不是 ProgressBar 小部件的属性。带有“?”的“?android:attr/foo”语法sigil 的意思是,“在当前主题中解析包含在这个主题属性中的资源。” 我设计和自定义视图并将其用作 lib 组件。在这里,我正在使用进度条,但无法更改 style="?android:attribute 相同的。它显示相同的进度条我检查了相同的其他参数以确保我使用相同。任何建议!!!跨度> 【参考方案2】:

如果有人正在寻找完整的代码块

<ProgressBar
android:id="@+id/ProgressBar2"
style="?android:attr/progressBarStyleLarge"
android:layout_
android:layout_ />

【讨论】:

【参考方案3】:

令人困惑的是,通常情况下,您可以像这样为小部件(例如按钮)定义默认样式:

<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Colored</item>

默认情况下,所有按钮都会应用此样式。

如果这样做,人们会认为 progressBarStyle 属性会对 ProgressBar 做同样的事情:

<item name="android:progressBarStyle">@style/Widget.AppCompat.ProgressBar</item>

但事实并非如此,因为progressBarStyle 属于ActionBar 样式。

【讨论】:

当您使用 AppCompat 时,您应该使用 progressBarStyle 而不是 android:progressBarStyle。对于除android:textViewStyle 之外的所有小部件都是如此。同意这令人困惑。 不正确,您只需要对属于 AppCompat... 小部件的属性执行此操作(例如 AppCompatEditTextAppCompatImageView 等)。没有AppCompatProgressBar,所以定义progressBarStyle没有Android前缀是没有效果的。 该死,你是对的,忘记了。它甚至没有连接到 AppCompat 的progressBarStyle。根据ProgressBar 源代码,它应该默认选择android:progressBarStyle。你为什么不调查为什么这在你的情况下不起作用? Stack Overflow 不是论坛,您的帖子并不能真正回答问题。

以上是关于ProgressBar中的android:progressBarStyle属性是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Android中的动画ProgressBar更新

从 IntentService 访问 Recyclerview 中的 TextView 和 Progressbar

下载文件时如何更新UICollectionViewCell子类中的progressBar

csharp Console C中的ProgressBar#

如何在 Android 中以编程方式隐藏 AsyncTask 中的 ProgressBar?

Android中的常用控件之进度条(ProgressBar)