gridView,网格

Unfortunately, after looking at the source code, I could not see any easy way to add borders other than taking the approach of adding borders to the each cell. As a reference, I will post my solution here.

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:background="@drawable/list_selector">

    <!-- Cell contents -->

</LinearLayout>

list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"
        android:drawable="@drawable/item_border_selected"
    />
    <item
        android:state_pressed="true"
        android:drawable="@drawable/item_border_selected"
    />
    <item
        android:drawable="@drawable/item_border"
    />
</selector>

item_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"
    />
    <stroke
        android:width="1px"
        android:color="@color/list_divider"
    />
</shape>

item_border_selected.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/list_select"
    />
    <stroke
        android:width="1px"
        android:color="@color/list_divider"
    />
</shape>

items_view.xml

<?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:layout_marginLeft="-1px"
    android:layout_marginRight="-1px"
    android:listSelector="@android:color/transparent"
/>

Since all lines double in size as they join their neighboring cells, I made the divider size 1px instead of 1dp so it doesn‘t appear too large on some screens. Also, I made the grid view have negative margins to hide the lines on either side. I hope this helps someone.

另一种方式

GridView网格布局,默认情况下是没有网格线的

查找网上资料,找到了一种为GridView添加网格线的小技巧

实际上,该网格线是通过设置GridView各子项的间隔,并分别设置GridView背景色与子项背景色实现的。

实现方法

  1. 设置GridView背景色,设置水平间方向间隔属性值android:horizontalSpacing和竖直方向间隔属性值android:verticalSpacing
  2. 设置GridView子项背景色

示例代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_GridView"
    android:horizontalSpacing="1dp"
    android:verticalSpacing="1dp"
    android:stretchMode="columnWidth"
    android:numColumns="3"
    android:gravity="center"
    android:listSelector="@null"
    android:background="#DCDCDC"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">  

</GridView> 

Main.java

package dyingbleed.iteye;  

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;  

public class Main extends Activity {  

    private GridView grid;  

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

        grid = (GridView) findViewById(R.id.main_GridView);
        grid.setAdapter(new GridViewAdapter(this));
    }  

    private class GridViewAdapter extends BaseAdapter {  

        private Context context;  

        public GridViewAdapter(Context context) {
            this.context = context;
        }  

        int count = 100;  

        @Override
        public int getCount() {
            return count;
        }  

        @Override
        public Object getItem(int position) {
            return position;
        }  

        @Override
        public long getItemId(int position) {
            return position;
        }  

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView result = new TextView(context);
            result.setText("Item "+position);
            result.setTextColor(Color.BLACK);
            result.setTextSize(24);
            result.setLayoutParams(new AbsListView.LayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)));
            result.setGravity(Gravity.CENTER);
            result.setBackgroundColor(Color.WHITE); //设置背景颜色
            return result;
        }  

    }
}  

运行截图:

以上文字摘自:http://blog.csdn.net/sfshine/article/details/8764858,http://stackoverflow.com/questions/7132030/android-gridview-draw-dividers

gridView,网格,布布扣,bubuko.com

时间: 2024-10-10 06:40:04

gridView,网格的相关文章

Android基础入门教程——2.4.9 GridView(网格视图)的基本使用

Android基础入门教程--2.4.9 GridView(网格视图)的基本使用 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家介绍的是第二个Adapter类的控件--GridView(网格视图),见名知义,ListView是列表, GridView就是显示网格!他和ListView一样是AbsListView的子类!很多东西和ListView都是相通的, 本节我们就来学习他的基本用法~ 1.相关属性: 下面是GridView中的一些属性: android:columnW

步步为营_Android开发课[22]_用户界面之GridView(网格视图)

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:用户界面之GridView(网格视图) -九宫格布局就是用它来实现的. GridView实现九宫格(实例): activity_main.xml: <?xml version="1.0" encoding="utf-8"?> &

GridView网格控件

一.GridView控件用于显示一个网格图像, GridView主要是用在一些相册的布局显示图片.GridView采用的是二维表的方式显示单元格,就需要设置二维表的行和列.设置GridView的列可以使用<GridView>标签的columnWidth属性.也可以使用GridView类的setColumnWidth方法来设置列数,GridView中的单元格会根据列数自动拆行显示,因此不需要设置GridView的行数,但是需要设置android:numColumns属性.否则GridView只会

从零开始学android&lt;GridView网格视图.二十八.&gt;

GridView组件是以网格的形式显示所有的组件,例如:在制作相册的时候,所有的图片都会以相同大小显示在不同的格子之中,就可以依靠此组件完成,此组件的继承结构如下所示: java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.AdapterView<T extends android.widget.Adapter> ? android.widget.AbsListView ? android.

Android课程---关于GridView网格视图的学习

activity_ui6.xml <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

GridView网格视图和Toast消息提示的作用

网格视图GridView其实就类似与电视上的九宫格,一般用于罗列多个元素的时候.要掌握GridView的用法首先要掌握BaseAdapter基础数据适配器的使用. GridView的一些属性:Android:columnWidth 列的宽度 Android:gravity 对齐方式 Android:horizomtalSpacing 列 间距 Android:stretchMode 缩放模式 Android:verticalSpacing 行 间距 getAdapter()获得与此组件相关的适配

安卓gridview 网格,多行多列实现

主Activity() private int[] image = { R.drawable.camera, R.drawable.wifi, R.drawable.temperature, R.drawable.lamp, R.drawable.wechat, R.drawable.mic, }; private String[] text = { "摄像头", "网络", "温湿度", "电器", "微信&quo

GridView(网格视图)的使用

一.GridView概述 GridView是一个以表格形式显示多张图片等组件.它是按照行列的方式来显示内容的,比如实现九宫格图,用GridView是首选. 二.GridView常用属性 属性名称 描述 android:columnWidth 设置列的宽度. android:gravity 设置此组件中的内容在组件中的位置.可选的值有:top.bottom.left.right.center_vertical.fill_vertical.center_horizontal.fill_horizon

android GridView网格布局,高度问题

项目中,遇到这样问题, 网格布局宽度自适应,但是高度设不了,文字和图片下面有一大片空白,将高度写死为306dp也不可以, 多方查找,得到答案,需要在适配器中 设置layoutparams设置高度, 代码如下 public class ServiceGridBaseAdapter extends BaseAdapter{ private Context mContext; private List<StaffEntity> mList; private StaffEntity entity; p