为什么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);
}
编辑: 这是我在其他帖子中找到的关于设置textView边距的内容
LinearLayout.LayoutParams params =(LinearLayout.LayoutParams)textViewD.getLayoutParams(); params.setMargins(2,2,2,2); textViewD.setLayoutParams(PARAMS);
我没有LinearLayout,当我尝试这个时,它会崩溃。
答案 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
置于另一个布局中,然后让LinearLayout
将Textview
的布局设置为setparams MATCH_PARENT
然后应用一些margins让我们说2
,然后添加整个视图(LinearLayout
作为根)。这将使黑色显示,因为边距将使视图调整一点,因此显示某种边界,就像您在图像中显示的那样!使用这种方式可以简化工作,因此您不需要创建分隔线,无论是水平还是垂直!