如何在Android上设置GridView的边框

如何在Android上设置GridView的边框,android,gridview,Android,Gridview,如何设置GridView的边框。 例如分隔符和分隔符ListView的视图。 或者如何显示边框 以下是GridView中的一些边界示例 您可以看到我在XML中定义红色和蓝色边框的位置 这是我的main.xml布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:

如何设置GridView的边框。
例如分隔符和分隔符ListView的视图。

或者如何显示边框

以下是GridView中的一些边界示例

您可以看到我在XML中定义红色和蓝色边框的位置

这是我的main.xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/red" >

    <GridView
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="10dp"
        android:background="@color/blue"
        android:columnWidth="90dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp"
         />

</RelativeLayout>
我的活动:

public class Example extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String[] array = new String[] {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
        List<String> list = new ArrayList<String>(Arrays.asList(array));
        GridView grid = (GridView) findViewById(R.id.gridview);
        grid.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, list));
    }
}
公共类示例扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
字符串[]数组=新字符串[]{“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”};
List List=newarraylist(Arrays.asList(array));
GridView网格=(GridView)findViewById(R.id.GridView);
setAdapter(新的ArrayAdapter(this,R.layout.list_项,list));
}
}

我在图像行xml中围绕我的画廊图像添加了以下视图:

<View
    android:layout_width="@dimen/listGalleryItemWidthLarge"
    android:layout_height="2dip"
    android:layout_above="@+id/gallery_row_iv"
    android:layout_centerHorizontal="true"
    android:background="#FFFFFF" />

<View
    android:layout_width="@dimen/listGalleryItemWidthLarge"
    android:layout_height="2dip"
    android:layout_below="@+id/gallery_row_iv"
    android:layout_centerHorizontal="true"
    android:background="#FFFFFF" />

<View
    android:layout_width="2dip"
    android:layout_height="@dimen/listGalleryItemHeightLarge"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/gallery_row_iv"
    android:background="#FFFFFF" />

<View
    android:layout_width="2dip"
    android:layout_height="@dimen/listGalleryItemHeightLarge"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/gallery_row_iv"
    android:background="#FFFFFF" />

  • 请注意,我正在为GridView使用自定义布局和适配器

在网格项xml文件中使用以下xml文件作为背景

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/transparent" />
    <corners
        android:bottomRightRadius="12dp"
        android:bottomLeftRadius="12dp"
        android:topLeftRadius="12dp"
        android:topRightRadius="12dp" />
    <stroke
        android:color="@android:color/white"
        android:width="1dp" />
</shape>

在res/drawable文件夹中创建grid\u row\u border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/transparent" />
    <corners
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />
    <stroke
        android:color="@color/material_grey_600"
        android:width="1dp" />
</shape>

提供padding[android:padding=“5dp”]和margin[android:layout\u margin=“5dp”]以使外观更好。

分隔符不是ListView的边框。。。您想控制中每个项目之间的灰色边框,还是像画框一样只控制外部的边框?这会在GridView周围放置边距。是否有一种方法可以向GridView添加填充,使可滚动区域仍然填充整个屏幕,而不是在GridView周围留有10dp的边距?是否要从图像中删除红色边距?否。理想情况下,我希望在GridView的内容周围留有指定的填充,而不是在GridView周围留有边距。了解差异,如有必要,我可以进一步解释:)换句话说,在您的示例中,如果垂直滚动GridView,则项目不会显示在红色边框的顶部。它们被剪裁在GridView(蓝色区域)的边距处。使用
android:padding
得到的结果基本上与
android:layout\u margin
样式是你的朋友:)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/transparent" />
    <corners
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />
    <stroke
        android:color="@color/material_grey_600"
        android:width="1dp" />
</shape>
android:background="@drawable/grid_row_border"