多个时如何以编程方式访问相对布局中的文本视图或进度条?
Posted
技术标签:
【中文标题】多个时如何以编程方式访问相对布局中的文本视图或进度条?【英文标题】:How do I access a textview or progressbar in relative layout programatically when multiple? 【发布时间】:2015-10-26 02:37:42 【问题描述】:我正在以编程方式在一个活动中创建多个相对布局。每个都是相同的,并且有一个 textview 以及一个 ProgressBar 微调器。
我想在需要时以编程方式更改它们,但不确定如何访问合适的。我相信我需要为每个项目(或者可能是相对布局本身)添加一个唯一的 SetId() 但不确定这样做的最佳方法。
我也不确定是否使用 findViewById 来访问创建后的视图以进行更改(SetText、SetVisibility 等)。
这里是代码
RelativeLayout.LayoutParams t***ame = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
t***ame.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
RelativeLayout.LayoutParams pbpSpinner = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
pbpSpinner.addRule(RelativeLayout.CENTER_IN_PARENT);
pbpSpinner.addRule(RelativeLayout.ALIGN_PARENT_TOP);
for (int i = 0; i < 5; i++)
RelativeLayout acctrl = new RelativeLayout(this);
TextView tvName = new TextView(this);
ProgressBar pbSpinner = new ProgressBar(this);
pbSpinner.setVisibility(View.GONE);
// Add items to Account Interal Layout
acctrl.addView(tvName, t***ame);
acctrl.addView(pbSpinner, pbpSpinner);
有什么建议/建议吗?
【问题讨论】:
为什么不创建一个RelativeLayout
s 的数组并在创建时将它们存储在数组中?然后,您将获得对每一个的引用。
猜我不知道如何做一个RelativeLayouts数组,然后引用其中的视图。
【参考方案1】:
当您以编程方式创建View
时,最好使用setId()
。此外,您也可以继续使用setTag()
。通过设置Tag
,您可以知道每个RelativeLayout
或任何其他视图。这样您就可以掌握您正在寻找的视图。
如果您不打算访问或修改RelativeLayout
,则无需为其设置 ID,但为其设置 ID 会更容易,因此您只需将RelativeLayout
的 ID 作为一个方法的参数,它将在它持有的Views
上执行所有操作,因为你说所有RelativeLayout
s都是相同的。
如果您使用的是setId()
,那么您可以使用findViewById()
来获取视图。
如果您使用的是setTag()
,您可以参考以下内容了解如何使用它来获取视图:https://***.com/a/5291891/4747587
【讨论】:
如前所述,我以为我必须setId()
...但我是否将其设置在RelativeLayout
或RelativeLayout
中的视图上?设置后,以编程方式访问这些视图的最佳方式是什么...findViewById
?
您应该在RelativeLayout
s 和内部View
s 上setId(int)
。然后,您可以使用 setId
中使用的 int 调用 findViewById(int)
,无论它是您的布局还是内部视图之一,您都将获得对 View
的引用。以上是关于多个时如何以编程方式访问相对布局中的文本视图或进度条?的主要内容,如果未能解决你的问题,请参考以下文章