java - 重复 LinearLayout 并稍作更改

标签 java android android-layout android-xml

我有一个垂直的 LinearLayout,我想用水平的 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 的解决方案。

我尝试过使用 for every ,这解决了部分问题,但找不到一种有效的方法来每次“传递”不同的数字。 (这些数字用于识别 Java 行中的输入 - 如果有更好的方法来管理它,那也可能会有所帮助)。

最佳答案

您可以在Activity中通过Java代码构建布局 - onCreate

可以动态修改布局
例如:构建3个seekbar并通过id删除第一个seekbar。

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)));

    }
}

关于java - 重复 LinearLayout 并稍作更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852749/

相关文章:

java - 使用级联框架运行hadoop程序时获取cascading.tap.hadoop.io.MultiInputSplit类未找到异常

java - 在不知道格式的情况下从字符串日期创建日历

android - 位图大小大于宽度和高度

android - Desugar项目运行失败

android - 可绘制图像缩放

java - 用户定义类的代码错误

android - 无法将裁剪后的图像(opencv Mat)复制到位图中

android - 为什么 RecyclerView 项目中的 ConstraintLayout 比 LinearLayout 慢?

android - SDK 管理器不显示示例包选项

java - 函数调用的正则表达式模式