Android GridView垂直边框

时间:2012-04-17 08:23:01

标签: android gridview android-gridview

我正在尝试在GridView中显示我的片段之间的边界。 我将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>

可能有人可以提供帮助。

迎接

1 个答案:

答案 0 :(得分:5)

嗯,我在之前的评论中试图解释的是:为什么不尝试让网格项目处理这个问题,而不是让GridView调整你想要的间距?一个简单的解决方案是将适当的drawable设置为您正在使用/传入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'

希望这会对你有所帮助。