[英]Programmatically set view width
我正在开发一个Android应用程序。 屏幕上随时显示六个主要的long
变量。 使用单独线程上的计时器,这些值将连续递增。 用户可以在屏幕上观看这些变量的增加。 这些变量中的每一个都有一个最大值。
我想为每个变量绘制一个“进度条”。 目前,我正在使用纯红色的View
。
请参见下面的原型:
左侧的红色横条表示已达到最大数量的变量,而其他横条为空,且横条的宽度为0,因此是不可见的。 每个变量都放置在RelativeLayout
(代表一个“节”)中,然后再放置在LinearLayout
。 在将来,我可能需要添加/删除一些内容-因此解决方案无需依赖于硬编码的布局位置。
我的问题是,如何在代码中以编程方式设置这些“进度条”的宽度,而又不对任何变量的布局坐标进行硬编码?
您应该检查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
类型。
常规方法是使用ProgressBar
,但是如果要使用自定义视图,请使用以下方法:
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(withInPx, heightInPx);
yourView.setLayoutParams(lp);
这假定您使用LinearLayout
,但是如果您使用其他布局(即RelativeLayout
),则应进行编辑
heightInPx
将根据您的情况进行固定,但是withInPx
可以根据进度而有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.