无法以编程方式更改水平进度条的宽度

时间:2010-05-25 18:01:00

标签: android

我想以编程方式更改Horizo​​ntal Progressbar的宽度(使用RelativeLayout在XML中设置初始大小...但我想基于某些值动态更改它。)

我在我的代码中尝试过setMinimumWidth(50),但这并没有什么区别。我也试过设置'android:layout_width =“wrap_content”,但这也不起作用。

这是我的XML:

<ProgressBar android:id="@+id/progress_horizontal"
     style="?android:attr/progressBarStyleHorizontal"
     android:layout_width="100dip"
     android:layout_height="wrap_content" 
/>

提前感谢您的任何帮助!

2 个答案:

答案 0 :(得分:0)

您的ProgressBar有哪些布局?这对于如何解释layout_width和height有所不同。

但是,我认为你看到View的宽度和layout_width之间存在冲突。每次渲染视图时,其首选大小都是根据设置的minWidth,width等确定的。然后,视图所在的布局可以根据layout_width信息更新要渲染的实际大小。有关两阶段流程的详细信息,请参阅How Android Draws ViewsView尺寸文档。

在你的情况下,你将layout_width设置为100,并将最小宽度设置为50,所以我认为它总是显示为100。

尝试将layout_width设置为wrap_content,然后更新ProgressBar的首选宽度。

答案 1 :(得分:0)

我认为当你给它初始值为100时,会遇到setmindwidth。系统会重新识别它超过50,然后继续按照它所说的其余部分来做。尝试使最小宽度为150,将xml设置为初始值75,并在onCreate中设置一个Log.d(“progbar”,String.valueOf(myprogress.width));

免责声明 - 在没有开发环境的工作计算机前编写,以供参考。