重复LinearLayout有轻微变化
问题描述:
我有一个垂直的LinearLayout,我想用水平LinearLayouts(它像行一样)填充。其中每一个都应该有效地相同,除了它们中的几个项目使用一个数字,每次都应该增加。重复LinearLayout有轻微变化
例如:
<LinearLayout android:id="@+id/row1" >
<SeekBar
android:id="@+id/seekBar"
android:tag="1"
/>
</LinearLayout>
<LinearLayout android:id="@+id/row2" >
<SeekBar
android:id="@+id/seekBar"
android:tag="2"
/>
</LinearLayout>
<LinearLayout android:id="@+id/row3" >
<SeekBar
android:id="@+id/seekBar"
android:tag="3"
/>
</LinearLayout>
在JavaScript中,我可能会使用这样的事情“自动”他们的创作:
for (var i = 0; i < count; i++) {
child = document.createElement("div");
child.id = "row" + i;
parent.appendChild(child);
}
是否有“自动”的这些创作的方式,这样我可以只有一个“模型”,然后迭代几次,每次都传入数字?我可以使用基于Java或基于XML的解决方案。
我已经尝试使用每一个,它解决了问题的一部分,但无法找到一种有效的方法来'传入'每次不同的数字。 (这些数字用于识别来自Java的行内的输入 - 如果有更好的方法来管理这些,那也可能有帮助)。
答
您可以通过Java代码在活动打造布局 - 的onCreate
您可以布局
例如动态修改:构建3个seekbars和ID删除第一个搜索条。
public class MainActivity extends AppCompatActivity {
ArrayList<Integer> seekbarsID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
seekbarsID = new ArrayList<>();
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
for (int i = 1; i < 4; i++) {
SeekBar seekbar = new SeekBar(this);
int id;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
id = View.generateViewId();
}else{
id = 99999999+i;
}
seekbar.setId(id);
seekbarsID.add (id);
seekbar.setTag(i);
layout.addView(seekbar);
}
setContentView(layout);
layout.removeView(findViewById(seekbarsID.get(0)));
}
}
如果我希望能够在不同的片段中做到这一点,该代码是否应该在fragment.onCreate()方法或其他地方运行?我该如何使用findViewById()(或以其他方式访问布局)在该方法中(或在哪里运行)? – ZSmith
其他地方。您需要将ID存储在全局变量中,您的系统可以将该ID回叫,您还需要将类或ID“布局”存储到全局变量以供将来处理。你也可以得到所有的孩子,并检查类的类型:https://*.com/questions/8395168/android-get-children-inside-a-view – slee