Android - 将 ProgressBar 设置为垂直条而不是水平条?
我正在尝试使用 ProgressBar 作为类似计量的显示。我认为这将是一个简单的任务,并认为 ProgressBar 有一个属性可以设置为垂直,但我没有看到任何东西。
此外,我希望能够在栏的侧面显示类似标尺的指示器,以清楚地指示当前级别。
感谢指点 - 谢谢!
I am trying to use a ProgressBar as a metering like display. I thought it was going to be an easy task and thought that ProgressBar had a property to set to be vertical, but I'm not seeing anything.
Additionally I'd like to be able to show ruler like indicator along the side of the bar to clearly indicate the current level.
Pointers appreciated - Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
我最近遇到了对垂直进度条的需求,但无法使用现有的进度条小部件找到解决方案。我遇到的解决方案通常需要扩展当前的进度栏或本身一个全新的类。我不相信推出一个新课程来实现简单的方向改变是必要的。
本文介绍了一种简单、优雅、最重要的是,一种无需黑客手段即可实现垂直进度条的解决方案。
我将跳过解释并简单地提供一个千篇一律的解决方案。如果您需要更多详细信息,请随时与我联系或在下面发表评论。
在您的drawable文件夹中创建一个xml(不是drawable-hdpi或drawable-mdpi - 将其放在drawable中)。对于本示例,我将 xml 命名为vertical_progress_bar.xml
以下是要在 xml 文件中放置的内容:
创建一个名为 styles.xml 的 xml 文件并将其放置在 res/values 中。如果您的项目已在 res/values 中包含 styles.xml,则跳过此步骤。
修改 styles.xml 文件并将以下代码附加到文件末尾:
将新的垂直进度条添加到布局中。这是一个示例:
这应该是您在项目中使用垂直进度条所需要做的全部事情。或者,您可能有用于进度条的自定义可绘制九块图像。您应该在progress_bar_vertical.xml 文件中进行适当的更改。
我希望这对您的项目有所帮助!
I had recently come across the need for a vertical progress bar but was unable to find a solution using the existing Progress Bar widget. The solutions I came across generally required an extension of the current Progress Bar or a completely new class in it self. I wasn't convinced rolling out a new class to achieve a simple orientation change was necessary.
This article presents a simple, elegant, and most importantly, a no-hack solution to achieving a vertical progress bar.
I'm going to skip the explanation and simply provide a cookie cutter solution. If you require further details feel free to contact me or leave a comment below.
Create an xml in your drawable folder (not drawable-hdpi or drawable-mdpi -- place it in drawable). For this example I call my xml vertical_progress_bar.xml
Here's what to place in the xml file:
Create an xml file called styles.xml and place it in res/values. If your project already contains styles.xml in res/values then skip this step.
Modify your styles.xml file and append the following code to the end of the file:
Add your new vertical progress bar to your layout. Here's an example:
That should be all you need to do to make use of a vertical progress bar in your project. Optionally, you might have custom drawable nine-patch images that you are using for the progress bar. You should make the appropriate changes in the progress_bar_vertical.xml file.
I hope this helps you out in your project!
您必须创建自己的自定义进度条。
在您的 xml 中添加以下布局:
VerticalProgressBar.java
或者:
Jagsaund 解决方案也很完美。
You have to create your own custom progressbar.
In your xml add this layout:
VerticalProgressBar.java
Or :
Jagsaund solution is also being perfect.
我知道这是一篇旧文章,但我找到了一个非常简单的解决方案来解决这个问题,也许可以帮助别人。
首先创建一个这样的progress_drawable_vertical.xml:
然后在progressBar中使用它:
我还创建了一个progress_drawable_horizontal.xml
,其目的是保持progress_drawable_vertical.xml中定义的相同样式
这里的关键是正确使用
android:clipOrientation
和android:gravity
。我在这里找到了这个解决方案该解决方案的核心类似于 jagsaund 但更简单一些。
I know that it´s an old post but I found a very simple solution to this problem that maybe can help somebody.
First at all create a progress_drawable_vertical.xml like this:
Then just use this in your progressBar:
I also have created an progress_drawable_horizontal.xml
with the objetive of mantain the same style defined in progress_drawable_vertical.xml
The key here is the correct use of
android:clipOrientation
andandroid:gravity
.I found this solution here and the core of the solution is similar to jagsaund but a little bit more simple.
我找到了可能是最好的(最简单和最通用)的解决方案:)
这是一篇旧帖子,但对我来说很难找到这个如此简单的解决方案,所以我想我应该发布它..
只需使用
scale -drawable
(如果需要,也可以使用 9 补丁),不需要任何其他代码。示例:
当然还有普通代码:
注意
scale-drawable
的 xml 行(神奇的行):I found the probably best(easiest & most versatile) solution:)
This is an old post, but it was so hard for me to find this so easy solution so I thought I should post it..
Just use a
scale-drawable
(or a 9-patch if you want), no need for ANY OTHER code.Example:
And of course the normal code:
Notice the
scale-drawable
's xml lines (the magic lines):简单易行的方法:
只需将视图添加到 LinearLayout 并缩放它即可。
将视图的
pivotY
设置为零:现在您可以使用
scaleY
在0F
和1F<之间填充进度< /代码>:
奖金:
使用 animate() 制作动画进度:
Simple and Easy way:
Just add a view to a
LinearLayout
and scale it.Set View's
pivotY
to zero:Now you can fill the progress using
scaleY
between0F
and1F
:Bonus:
Animate progress using
animate()
:创建进度条(我将代码从 C# 转换为 Java,因此可能不是 100% 正确)
vertical_progress_bar.xml
vertical_progress_bar_blue_progress.xml
要使进度条垂直,请使用
vertical_progress_bar.xml
中的scaleHeight
和scaleGravity
属性。它最终看起来像这样:
Creating the progress bar (I converted my code from c# to java so might not be 100% correct)
vertical_progress_bar.xml
vertical_progress_bar_blue_progress.xml
What's going to make your bar vertical is the
scaleHeight
andscaleGravity
attributes invertical_progress_bar.xml
.It ends up looking something like this:
这是一个简单的解决方案,只需旋转进度条即可
Here is a simple solution, just rotate your progress bar
将其添加到 xml 代码中
机器人:旋转=“90”
机器人:transformPivotX =“0dp”
这就是你的进度条 xml 的样子
Add this to the xml code
android:rotation="90"
android:transformPivotX="0dp"
So this is how your Progress Bar xml should look
要利用 ProgressBar 并使其垂直,您必须创建自己的自定义视图来扩展 ProgressBar 视图并重写 onDraw() 方法。这将允许您以相反的方向绘制它。查看源代码ProgressBar.onDraw()(位于链接底部)的 a> 获取有关如何执行此操作的帮助。最好的情况是,您只需交换一些 x 和 y 变量。
To utilize the ProgressBar and make it vertical, you would have to create your own custom View extending the ProgressBar view and override the onDraw() method. This will allow you to draw it in a reverse orientation. Take a look at the source code of the
ProgressBar.onDraw()
(located at the bottom of the link) for help on how to do this. Best case scenario, you'll just have to swap a few x and y variables.我有确切的问题。创建自定义类(扩展 ProgressBar)将创建难以维护的代码。使用自定义样式会导致与新操作系统的不同主题(例如棒棒糖)的兼容性问题
最终,我只是将旋转动画应用于水平进度条。受到皮特的启发。
代码:
I have the exact problem. Making a custom class (extending ProgressBar) will create code that are hard to maintain. Using a custom style will cause compatibility issue with different theme from new OS (e.g. lollipop)
Eventually, I just apply a rotation animation to an horizontal progress bar. Inspired by Pete.
Code:
简单的progrebar图像视图
示例
简单类
}
Simple progrebar image view
example
simple class
}
使用 android:rotation="270" 到 100% 就像从下到上或 android:rotation="90" 到 100% 就像从上到下
Use android:rotation="270" to 100% be like bottom to top or android:rotation="90" to 100% be like top to bottom
在此处输入链接描述
**查看此链接,我试图使用类似的东西并且您也可以根据您的要求使用步进器,Github 上很少有关于如何在 ANDROID STUDIO 中使用步进器的项目 **
enter link description here
**Check this link out, I was trying to use a similar thing and also you can use stepper for your requirement, few projects are available on Github about HOW TO USE STEPPER IN ANDROID STUDIO **
为了制作垂直的 ProgressBar,我解决的方法是首先将其旋转 90 度,然后用手动输入的值对其进行缩放。
这是我在进度条上的属性的示例
这可能需要一点手动操作,但因为默认情况下它们没有垂直进度条,所以这对我来说是一个非常好的解决方法。 scaleX 可以自动计算,但必须在屏幕上绘制所有内容之后才可以计算。
For making a vertical ProgressBar, The way that I solved it was first rotating it by 90 degrees, then scaling it with a value entered by hand.
Here's an example of my attributes on the ProgressBar
This can be a little manual, but because they don't have a vertical progress bar by default, this was a pretty good workaround for me. The scaleX could be calculated automatically, but it would have to be after everything is drawn on the screen.
经过几个小时的搜索,我有了一个想法:
如果您可以旋转
div
,则在STYLE
中输入rotate: 90deg
或rotate: 270deg
即可。After hours of searching, I had an idea:
If you can rotate the
div
then puttingrotate: 90deg
orrotate: 270deg
in theSTYLE
will work.默认情况下不支持垂直进度条。
Vertical progress bars are not supported by default.