2012-04-17 72 views
1

我试图在GridView中显示我的分段之间的边界。 我将GridView的背景色设置为白色,将碎片的背景色设置为黑色。 然后我插入的代码行:Android GridView垂直边框

int border = 2; // px 
view.setColumnWidth((dm.widthPixels/2)-(4*border)); 
view.setNumColumns(2); 
view.setHorizontalSpacing(border); 
view.setVerticalSpacing(border); 

view是我GridView

结果是在整个GridView的左边以及顶部和底部的片段之间有很好的边界。 但是在两个片段之间没有边界。

这里是我的GridView声明:

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/overview" 
    android:stretchMode="columnWidth" 
    android:clipChildren="true" > 

</GridView> 

可能有人可以提供帮助。

电贺

+0

你不能简单地设置一些填充或(9patch)drawable作为你的网格物品布局的背景吗? – 2012-04-17 08:32:26

+0

我完全不明白你的提示。你能解释一下你的意思吗? – Henrik 2012-04-18 07:05:35

+0

@Henrik:我加了我的解释作为答案,因为它不适合几行。 :)顺便说一下,下次您回复评论时,请添加@ @ @ @ @ @ 0 @@(例如'@ MH.'),因为那个人会收到您的回复通知。 – 2012-04-18 22:09:45

回答

5

那么,我想在我先前的评论来解释:在具有GridView调节你想要的间距,你为什么不尝试,使电网项目采取照顾代替?一个简单的解决方案是通过设置一个合适的可绘制的背景作为您使用/传递到GridView的适配器中的布局文件的背景 - 换句话说:您用于网格项目的布局,在您的情况下你提到的片段。

一个简单的例子:

乘坐GridView

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/white" 
    android:numColumns="4" /> 

而一个布局将用于该项目的这里面:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/grid_background" 
    android:gravity="center" 
    android:text="Text" 
    android:textColor="@android:color/white" /> 

最后,从魔术可绘制背景:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android">  
    <stroke android:width="5dp" android:color="@android:color/white" />  
    <padding android:bottom="5dp" android:left="5dp" android:right="5dp" 
     android:top="5dp" />  
    <solid android:color="@android:color/black" />  
</shape> 
然后

结果将是:

gridview with 'borders'

我不知道为什么水平和垂直间距参数不为你工作,顺便说一句。当我使用这些,我能够得到非常相似,上面的图像中的效果:

GridView

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/white" 
    android:horizontalSpacing="10dp" 
    android:numColumns="4" 
    android:verticalSpacing="10dp" /> 

项目布局(只是换出较早的背景资源为固定的颜色) :

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/black" 
    android:gravity="center" 
    android:text="Text" 
    android:textColor="@android:color/white" /> 

结果:

another gridview with 'borders'

希望这会帮助你的方式。

+0

我尝试了两种解决方案,但都没有工作。我将“android:background =”@ drawable/grid_layout“”语句插入到碎片的外部LinearLayout中。那是对的吗? – Henrik 2012-04-19 07:28:18

+0

对不起,你的解决方案与grid_layout工作正常!我在我设置背景颜色的片段代码中找到了一行。删除这条线一切都很完美。谢谢!! – Henrik 2012-04-19 10:57:53

+0

如果我使用适配器来设置TextView,该怎么办?我应该把TextView的XML吗? – 2013-05-02 10:35:25