如何在多个时以编程方式访问相对布局中的文本视图或进度条?
How do I access a textview or progressbar in relative layout programatically when multiple?
我正在 activity 中以编程方式创建多个相关布局。每个都是相同的,并且有一个文本视图和一个 ProgressBar 微调器。
我想在需要时以编程方式更改它们,但不确定如何访问合适的。我相信我需要为每个项目(或者可能是 relativelayout 本身)添加一个唯一的 SetId() 但不确定这样做的最佳方法。
我也不确定我是否使用 findViewById 访问创建后的视图以进行更改(SetText、SetVisibility 等)。
这是代码
RelativeLayout.LayoutParams tvpName = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
tvpName.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, tvpName);
acctrl.addView(pbSpinner, pbpSpinner);
}
有什么建议吗?
当您以编程方式创建 View
时,setId()
是一个很好的做法。此外,您还可以继续 setTag()
。通过设置一个Tag
,你可以知道每个RelativeLayout
或任何其他视图。这样您就可以找到您正在寻找的视图。
如果您不打算访问或修改 RelativeLayout
,则无需为其设置 ID,但为其设置 ID 会更容易,因此您只需发送 [= =14=] 作为方法的参数,它将对它持有的 Views
执行所有操作,因为你说所有 RelativeLayout
都是相同的。
如果您正在使用 setId()
,那么您可以使用 findViewById()
来获取视图。
如果你使用 setTag()
,你可以参考这个关于如何使用它来获取视图:
我正在 activity 中以编程方式创建多个相关布局。每个都是相同的,并且有一个文本视图和一个 ProgressBar 微调器。
我想在需要时以编程方式更改它们,但不确定如何访问合适的。我相信我需要为每个项目(或者可能是 relativelayout 本身)添加一个唯一的 SetId() 但不确定这样做的最佳方法。
我也不确定我是否使用 findViewById 访问创建后的视图以进行更改(SetText、SetVisibility 等)。
这是代码
RelativeLayout.LayoutParams tvpName = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
tvpName.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, tvpName);
acctrl.addView(pbSpinner, pbpSpinner);
}
有什么建议吗?
当您以编程方式创建 View
时,setId()
是一个很好的做法。此外,您还可以继续 setTag()
。通过设置一个Tag
,你可以知道每个RelativeLayout
或任何其他视图。这样您就可以找到您正在寻找的视图。
如果您不打算访问或修改 RelativeLayout
,则无需为其设置 ID,但为其设置 ID 会更容易,因此您只需发送 [= =14=] 作为方法的参数,它将对它持有的 Views
执行所有操作,因为你说所有 RelativeLayout
都是相同的。
如果您正在使用 setId()
,那么您可以使用 findViewById()
来获取视图。
如果你使用 setTag()
,你可以参考这个关于如何使用它来获取视图: