Android GridLayout Dividers

时间:2017-11-21 20:20:35

标签: android border android-gridlayout divider

为什么Android不包含在网格布局中边框单元格的功能?我已经阅读了多个方法来执行此操作。我尝试过的有限成功的一种方法如下。我的问题是水平线分隔线。当使用垂直和水平代码执行时,我的网格最终会阻塞单元格,因此文本在单元格中不可见。如果我删除水平代码,我会按预期在每列上获得完美的垂直线。知道什么是错的任何想法。我能够使用相同的方法在表格上创建网格线。 gridlayout位于垂直滚动内部的水平滚动内。 Gridlayout背景是黑色的。所以我最终应该使用蓝色单元格和黑色分隔线。

 for (int y = 0; y < rownum; y++) {
 cols = 0;
 while (cols < columnum) {
  TextView textViewD = new TextView(this);
  textViewD.setTextSize(18);
  textViewD.setWidth(300);
  textViewD.setHeight(75);
  textViewD.setTextColor(Color.WHITE);
  textViewD.setBackgroundColor(Color.BLUE);
   textViewD.setText(title);
  //CREATE VERTICAL DIVIDER LINES
            View v = new View(this);
            v.setLayoutParams(new ViewGroup.LayoutParams(3, ViewGroup.LayoutParams.MATCH_PARENT));
            v.setBackgroundColor(Color.BLACK);
    cols++;
    gridLayoutE.addView(textViewD);

    }

    //CREATE HORIZONTAL DIVIDER LINES

               View v1 = new View(this);
        v1.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 3));
        v1.setBackgroundColor(Color.BLACK);
        gridLayoutE.addView(v1);

   }

enter image description here

编辑: 这是我在其他帖子中找到的关于设置textView边距的内容

LinearLayout.LayoutParams params =(LinearLayout.LayoutParams)textViewD.getLayoutParams();             params.setMargins(2,2,2,2);             textViewD.setLayoutParams(PARAMS);

我没有LinearLayout,当我尝试这个时,它会崩溃。

2 个答案:

答案 0 :(得分:2)

对于那些可能遇到类似情况的人,正如Xenolion所建议的那样,这就是我最终要做的事情。

for (int y = 0; y < rownum; y++) {
cols = 0;
while (cols < columnum) {
LinearLayout parent = new LinearLayout(this);
            parent.setBackgroundColor(Color.BLACK);
            parent.setOrientation(LinearLayout.HORIZONTAL);
            LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
 params.setMargins(2, 2, 2, 2);  //CREATES DIVIDER LINES
 TextView textViewD = new TextView(this);
 textViewD.setTextSize(18);
 textViewD.setWidth(300);
 textViewD.setHeight(75);
 textViewD.setTextColor(Color.WHITE);
 textViewD.setBackgroundColor(Color.BLUE);
 textViewD.setText(title);
 textViewD.setLayoutParams(params);
 parent.addView(textViewD);
 cols++;
 gridLayoutE.addView(parent);
}

}

答案 1 :(得分:1)

获得您想要的View的另一种简单方法是:

由于GridLayout的背景已经是黑色,请将您的TextView置于另一个布局中,然后让LinearLayoutTextview的布局设置为setparams MATCH_PARENT然后应用一些margins让我们说2,然后添加整个视图(LinearLayout作为根)。这将使黑色显示,因为边距将使视图调整一点,因此显示某种边界,就像您在图像中显示的那样!使用这种方式可以简化工作,因此您不需要创建分隔线,无论是水平还是垂直!