Android 网格布局分隔线
Android GridLayout Dividers
为什么 Android 不包括在网格布局中为单元格添加边框的功能?我已经阅读了多个 post 的几种方法来做到这一点。下面是我尝试过但收效甚微的一种方法。我的问题是水平线分隔线。当使用适当的垂直和水平代码执行时,我的网格最终会被单元格挡住,因此文本在单元格中不可见。如果我删除水平代码,我会按预期在每一列获得完美的垂直线。关于什么是错误的任何想法。我能够使用相同的方法在 table 上创建网格线。网格布局位于水平滚动条内,水平滚动条位于垂直滚动条内。网格布局背景为黑色。所以我最终应该得到蓝色单元格和黑色分隔线。
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);
}
编辑:
这是我在其他 post 上找到的关于设置 textView
的边距
LinearLayout.LayoutParams 参数 = (LinearLayout.LayoutParams)textViewD.getLayoutParams();
params.setMargins(2, 2, 2, 2);
textViewD.setLayoutParams(参数);
我没有 LinearLayout,当我尝试这样做时,它崩溃了。
另一种获得您想要的 View
的简单技巧是:
因为你的 GridLayout
的背景已经是黑色的,把你的 TextView
放在另一个布局中让 LinearLayout
将 Textview
的布局设置为 setparams MATCH_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);
}
}
为什么 Android 不包括在网格布局中为单元格添加边框的功能?我已经阅读了多个 post 的几种方法来做到这一点。下面是我尝试过但收效甚微的一种方法。我的问题是水平线分隔线。当使用适当的垂直和水平代码执行时,我的网格最终会被单元格挡住,因此文本在单元格中不可见。如果我删除水平代码,我会按预期在每一列获得完美的垂直线。关于什么是错误的任何想法。我能够使用相同的方法在 table 上创建网格线。网格布局位于水平滚动条内,水平滚动条位于垂直滚动条内。网格布局背景为黑色。所以我最终应该得到蓝色单元格和黑色分隔线。
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);
}
编辑: 这是我在其他 post 上找到的关于设置 textView
的边距LinearLayout.LayoutParams 参数 = (LinearLayout.LayoutParams)textViewD.getLayoutParams(); params.setMargins(2, 2, 2, 2); textViewD.setLayoutParams(参数);
我没有 LinearLayout,当我尝试这样做时,它崩溃了。
另一种获得您想要的 View
的简单技巧是:
因为你的 GridLayout
的背景已经是黑色的,把你的 TextView
放在另一个布局中让 LinearLayout
将 Textview
的布局设置为 setparams MATCH_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);
}
}