以编程方式创建带有 2 列按钮的滚动视图 Android Studio Java

Programmatically create a scrollview with 2 columns of buttons Android Studio Java

我创建了一个滚动视图,我以编程方式添加了可变数量的按钮,但我现在必须这样做,以便在滚动视图中的每个按钮旁边都有第二个较小的按钮。现在这是我的屏幕:

我希望每个按钮旁边都有一个小按钮,可以让我删除选项或类似的内容。

这是我现在用来构建按钮的代码

    public void addButtons() {
        LinearLayout linearLayout = findViewById(R.id.loadLinearLayout);

        int i = 0;
        for(File file : files) {
            Button newButton = new Button(this);
            String filename = file.getName();
            newButton.setId(i);
            newButton.setText(filename);
            newButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    loadGame(view.getId());
                }
            });
            i++;

            linearLayout.addView(newButton);
        }
    }

如有任何帮助,我们将不胜感激。

不是为每个文件添加一个 Button,而是为每个文件添加一个整体 LinearLayout,水平方向。然后,在这个内部线性布局中首先添加带有文件名的按钮,然后是删除按钮(它们将出现在一行中)。

public void addButtons() {
    LinearLayout linearLayout = findViewById(R.id.loadLinearLayout);

    int i = 0;
    for(File file : files) {
        //create horizontal linear layout
        LinearLayout innerLayout = new LinearLayout(this);
        innerLayout.setOrientation(LinearLayout.HORIZONTAL);

        Button newButton = new Button(this); //button which shows file name
        String filename = file.getName();
        newButton.setId(i);
        newButton.setText(filename);
        newButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                loadGame(view.getId());
            }
        });
        innerLayout.addView(newButton);

        Button deleteButton = new Button(this);
        deleteButton.setText("Delete"); //use a string resource ideally
        innerLayout.addView(deleteButton);

        linearLayout.addView(innerLayout); //add the inner layout to the outer
        i++;
    }
}

您可能需要做一些额外的样式设置,例如设置按钮之间的距离,或以某种方式对齐它们。您也应该能够以某种方式以编程方式执行此操作,但那是另一回事了。