【问题标题】:How to set style to a progressBar programmatically on Android如何在Android上以编程方式将样式设置为progressBar
【发布时间】:2014-10-10 16:03:54
【问题描述】:

我在 style.xml 中有 ProgressBar 样式。 当我创建布局时,将 ProgressBar 放在那里并设置如下样式:

style="@style/ProgressBarStyle"

将布局设置为对话框,一切都很好。

其他方式以编程方式为对话框创建视图。 所以对于 ProgressBar 我有下一个代码:

new ProgressBar(context, null, R.style.ProgressBarStyle);

但是这样一来,ProgressBar 就什么都没有了。

附:我不会忘记将 ProgressBar 添加到我设置为对话框视图的视图中。

【问题讨论】:

  • 所以你的问题是你的自定义样式没有应用到你的进度条上?
  • 未以编程方式应用

标签: android android-styles


【解决方案1】:

您可以从构造函数中设置样式,例如:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);

其中第三个属性是样式。

在你的情况下,我认为错误是选择了错误的。就是这个。

【讨论】:

  • 正如我已经写过的,我知道第三个属性。如果我选择了错误的,为什么在 xml 中这个错误的可以正常工作?
  • 它对你有用吗?我不完全确定,但我会说它们是不同事物的引用,并且 R.style.ProgressBarStyle 被您自己的样式(在样式文件夹中)甚至您设置为活动的默认 Android 样式覆盖/跨度>
  • 好吧,可能我表达的不是很清楚。我有自己的风格,叫做 ProgressBarStyle。在 R.style 和 @style 我可以找到它。在 xml 中可以(样式应用于进度条)。但程序上出现问题,没有显示任何进度条
【解决方案2】:

想通了。您必须通过第 4 个参数 defStyleRes 而不是第 3 个参数 defStyleAttr 传递样式。

ProgressBar customProgressBar = new ProgressBar(context, null, 0, R.style.Widget_App_CustomProgressBar);

此外,您创建的自定义样式应扩展AppCompat 进度条样式,如下所示。

<style name="Widget.App.CustomProgressBar" parent="Widget.AppCompat.ProgressBar">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@drawable/custom_progress_bar</item>
</style>

【讨论】:

    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2011-03-15
    • 2020-06-20
    相关资源
    最近更新 更多