我正在以编程方式在活动中创建多个相对布局。每个都是相同的,有一个textview和一个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);
}
有任何建议/建议吗?
答案 0 :(得分:0)
以编程方式创建View
时,setId()
是一种很好的做法。此外,您还可以继续setTag()
。通过设置Tag
,您可以了解每个RelativeLayout
或任何其他视图。这样你就可以掌握你正在寻找的视图。
如果您不打算访问或修改RelativeLayout
,则无需为其设置ID,但为其设置ID会使这更容易,因此您只需发送{{1的ID作为方法的参数,它将对它所持有的RelativeLayout
执行所有操作,因为您说所有Views
都是相同的。
如果您使用RelativeLayout
,则可以使用setId()
来获取视图。
如果您使用的是findViewById()
,则可以参考此处了解如何使用它来获取视图:https://stackoverflow.com/a/5291891/4747587