繁体   English   中英

以编程方式设置视图宽度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM