以编程方式设置视图宽度

时间:2013-12-01 19:58:30

标签: java android view

我正在开发一个Android应用程序。任何时候屏幕上都会显示六个主要long个变量。它们在单独的线程上使用计时器不断递增。用户可以在屏幕上观看这些变量的增加。这些变量中的每一个都有最大量。

我想做的是为每个变量绘制一个'进度条'。目前,我正在使用带有纯红色的View

请参阅下面的原型:

enter image description here

左边的红色条表示已达到最大值的变量,而其他变量为空,条形宽度为0,因此不可见。每个变量都放在RelativeLayout(代表一个'section')中,然后放在LinearLayout中。在未来,我可能需要添加/删除一些 - 因此解决方案不需要依赖硬编码布局定位。

我的问题是我如何编程在代码中设置这些'进度条的宽度,而不是硬编码任何变量的布局坐标?

2 个答案:

答案 0 :(得分:0)

您应该检查http://developer.android.com/reference/android/widget/ProgressBar.html ProgressBar。它可以让您轻松显示进度。

对于LinearLayout(以及此问题的任何ViewGroup),您可以以编程方式生成自己的LayoutParams

LayoutParams params = new LayoutParams(width,height) // in px
yourLinearLayout.setLayoutParams(params);

您需要将LayoutParams转换为相应的ViewGroup类型。

答案 1 :(得分:0)

常规方法是使用ProgressBar,但如果您想使用自定义视图,请使用以下命令:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(withInPx, heightInPx);
yourView.setLayoutParams(lp);

这假定您使用LinearLayout,但如果您使用其他布局(即RelativeLayout

,则应编辑它

heightInPx将在您的情况下修复,但withInPx根据进度可能会有所不同。