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