gpt4 book ai didi

Android - 将 ProgressBar 设置为垂直条而不是水平条?

转载 作者:IT老高 更新时间:2023-10-28 21:56:47 33 4
gpt4 key购买 nike

我正在尝试将 ProgressBar 用作类似显示的计量器。我认为这将是一项简单的任务,并认为 ProgressBar 有一个属性可以设置为垂直,但我什么也没看到。

此外,我希望能够在条形的一侧显示类似标尺的指示器,以清楚地指示当前级别。

感谢指点 - 谢谢!

最佳答案

我最近遇到了对垂直进度条的需求,但无法使用现有的进度条小部件找到解决方案。我遇到的解决方案通常需要对当前进度条进行扩展或在其中添加一个全新的类。我不相信推出一个新类来实现简单的方向改变是必要的。

本文介绍了一种简单、优雅且最重要的是实现垂直进度条的无黑客解决方案。我将跳过解释,简单地提供一个千篇一律的解决方案。如果您需要更多详细信息,请随时与我联系或在下面发表评论。

在你的drawable文件夹中创建一个xml(不是drawable-hdpi或drawable-mdpi——把它放在drawable中)。对于此示例,我将我的 xml 称为 vertical_progress_bar.xml

下面是放置在 xml 文件中的内容:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="180"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip android:clipOrientation="vertical" android:gravity="bottom">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="180"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip android:clipOrientation="vertical" android:gravity="bottom">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ffffd300"
android:centerColor="#ffffb600"
android:centerY="0.75"
android:endColor="#ffffcb00"
android:angle="180"
/>
</shape>
</clip>
</item>
</layer-list>

创建一个名为 styles.xml 的 xml 文件并将其放在 res/values 中。如果您的项目已经在 res/values 中包含了 styles.xml,请跳过此步骤。

修改您的styles.xml 文件并将以下代码附加到文件末尾:

<style name="Widget">
</style>
<style name="Widget.ProgressBar">
<item name="android:indeterminateOnly">true</item>
<item name="android:indeterminateBehavior">repeat</item>
<item name="android:indeterminateDuration">3500</item>
<item name="android:minWidth">48dip</item>
<item name="android:maxWidth">48dip</item>
<item name="android:minHeight">48dip</item>
<item name="android:maxHeight">48dip</item>
</style>
<style name="Widget.ProgressBar.Vertical">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/progress_bar_vertical</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
<item name="android:minWidth">1dip</item>
<item name="android:maxWidth">12dip</item>
</style>

将新的垂直进度条添加到布局中。这是一个例子:

<ProgressBar
android:id="@+id/vertical_progressbar"
android:layout_width="12dip"
android:layout_height="300dip"
style="@style/Widget.ProgressBar.Vertical"
/>

这就是您在项目中使用垂直进度条所需要做的一切。或者,您可能有用于进度条的自定义可绘制 9-patch 图像。您应该在 progress_bar_vertical.xml 文件中进行适当的更改。我希望这对您的项目有所帮助!

关于Android - 将 ProgressBar 设置为垂直条而不是水平条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926395/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com