【问题标题】:TableLayout how to add spacing between ImageViewTableLayout如何在ImageView之间添加间距
【发布时间】:2020-04-08 23:35:53
【问题描述】:

我想达到如下效果:

不幸的是,这就是我现在所做的:

如何在 ImageView 之间添加空格以获得与第一张图片相同的效果?这是我的代码:

public class MainActivity extends AppCompatActivity {

    private int totalValue = 2000;
    private int currentValue = 180;
    private int rowsNumber = 10;
    private int columnsNumber = 10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TableLayout tableLayout = findViewById(R.id.tableLayout);


        for (int i = 0; i < 10; i++) {

            TableRow tableRow = new TableRow(this);
            tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                    TableRow.LayoutParams.WRAP_CONTENT));

            for (int j = 0; j < columnsNumber; j++) {

                ImageView imageView = new ImageView(this);

                imageView.setImageResource(this.getCellDrawableId(i, j, totalValue, currentValue));

                tableRow.addView(imageView, j);
            }

            tableLayout.addView(tableRow, i);
        }
    }


    private int getCellDrawableId(int i, int j, int totalValue, int currentValue) {

        return R.drawable.test;
    }
}

【问题讨论】:

    标签: android android-studio tablelayout


    【解决方案1】:

    使用 TableRow.LayoutParams lp = new TableRow.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 它会起作用的。

                TableRow.LayoutParams lp = new TableRow.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                lp.leftMargin = margin;
                lp.topMargin = margin;
                lp.rightMargin = margin;
                lp.bottomMargin = margin;
                imageView.setLayoutParams(lp);
    

    或者你可以使用imageView.setPadding(padding, padding, padding, padding);

    干杯。

    【讨论】:

      【解决方案2】:
          ImageView imageView = new ImageView(this);
          LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
      
          //Enter your margin below:
          lp.setMargins(left, top, right, bottom);
      
          imageView.setLayoutParams(lp);
          imageView.setImageResource(this.getCellDrawableId(i, j, totalValue, currentValue));
          tableRow.addView(imageView, j);
      

      试试这个,如果它对你有帮助,请告诉我。

      【讨论】:

      • 很遗憾,但这不起作用,图表根本不显示
      • 您是R.drawable.test SVG 文件吗?如果是,请张贴drawable