Android网格布局分隔器

Android网格布局分隔器,android,border,android-gridlayout,divider,Android,Border,Android Gridlayout,Divider,为什么Android不能在gridlayout中包含单元格边框功能?我已经读了很多关于几种方法的帖子。下面是我尝试过的一种有限成功的方法。我的问题是水平线分隔器。当使用垂直和水平代码执行时,我的网格将以单元格为结束,因此文本在单元格中不可见。如果我删除水平代码,我会像预期的那样在每一列获得完美的垂直线。有什么问题吗。我能够使用相同的方法在表上创建网格线。gridlayout位于水平卷轴内,而水平卷轴位于垂直卷轴内。Gridlayout背景为黑色。因此,我应该以蓝色单元格和黑色分隔线结束 for

为什么Android不能在gridlayout中包含单元格边框功能?我已经读了很多关于几种方法的帖子。下面是我尝试过的一种有限成功的方法。我的问题是水平线分隔器。当使用垂直和水平代码执行时,我的网格将以单元格为结束,因此文本在单元格中不可见。如果我删除水平代码,我会像预期的那样在每一列获得完美的垂直线。有什么问题吗。我能够使用相同的方法在表上创建网格线。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);

   }
for(int y=0;y

编辑: 这是我在另一篇关于设置textView页边距的文章中发现的

LinearLayout.LayoutParams params=(LinearLayout.LayoutParams)textViewD.getLayoutParams(); 参数设置边距(2,2,2,2); textViewD.setLayoutParams(参数)


我没有线性布局,当我尝试这样做时,它会崩溃。

另一个简单而棘手的方法是:


因为你的
GridLayout
的背景已经是黑色的,所以把你的
TextView
放在另一个布局中,比如说
LinearLayout
TextView
的布局与setparams
匹配\u PARENT
然后应用一些边距,比如说
2
,然后添加整个视图(
LinearLayout
作为根)。这将使黑色显示出来,因为边距会使视图稍微调整,因此会显示一些边界,就像您在图像中显示的那样!使用这种方法将简化工作,因此您不需要创建分隔线,无论是水平还是垂直!

另一种简单而棘手的方法是你想要的相同的
视图是:


因为你的
GridLayout
的背景已经是黑色的,所以把你的
TextView
放在另一个布局中,比如说
LinearLayout
TextView
的布局与setparams
匹配\u PARENT
然后应用一些边距,比如说
2
,然后添加整个视图(
LinearLayout
作为根)。这将使黑色显示出来,因为边距将使视图稍微调整,从而显示某种边界,就像您在图像中所显示的那样!使用这种方式将简化工作,因此您不需要创建分隔线,无论是水平还是垂直!

对于可能遇到类似情况的人根据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);
}
for(int y=0;y

}

对于那些可能遇到类似情况的人,正如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);
}
for(int y=0;y

}

你能提供一张你希望它看起来如何的图片吗?我附上了预期结果的图片。你用没有xml的代码创建整个视图吗?textView的父视图是什么?没有人吗?是它本身吗?这是一个技巧,因为你的gridlayout的背景是黑色的,已经将textView的布局设置为setparams match parent然后应用一些边距,例如2。这将使黑色显示,因为边距将使视图稍微调整。你明白了吗?你可以包含一个图像,说明你希望它看起来如何吗?我附上了预期结果的图像。你在没有xml的代码中创建整个视图吗?textView的父视图是什么?有