• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android gridview画分割线

android gridview画分割线

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android gridview,android gridview用法,android gridview属性,android gridview间距,android gridview控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android gridview画分割线


android gridview画分割线,如图:

1。先上图: </div> 2.具体实现代码:</div>
public class LineGridView extends GridView {
    public LineGridView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public LineGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LineGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        View localView1 = getChildAt(0);
        int column = getWidth() / localView1.getWidth();//计算出一共有多少列,假设有3列
        int childCount = getChildCount();//子view的总数
        System.out.println("子view的总数childCount==" + childCount);
        Paint localPaint;//画笔
        localPaint = new Paint();
        localPaint.setStyle(Paint.Style.STROKE);
        localPaint.setColor(getContext().getResources().getColor(R.color.line));//设置画笔的颜色
        for (int i = 0; i < childCount; i++) {//遍历子view
            View cellView = getChildAt(i);//获取子view
            if (i < 3) {//第一行
                canvas.drawLine(cellView.getLeft(), cellView.getTop(), cellView.getRight(), cellView.getTop(), localPaint);
            }
            if (i % column == 0) {//第一列
                canvas.drawLine(cellView.getLeft(), cellView.getTop(), cellView.getLeft(), cellView.getBottom(), localPaint);
            }
            if ((i + 1) % column == 0) {//第三列
                //画子view底部横线
                canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
                canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
            } else if ((i + 1) > (childCount - (childCount % column))) {//如果view是最后一行
                //画子view的右边竖线
                canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
                canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
            } else {//如果view不是最后一行
                //画子view的右边竖线
                canvas.drawLine(cellView.getRight(), cellView.getTop(), cellView.getRight(), cellView.getBottom(), localPaint);
                //画子view的底部横线
                canvas.drawLine(cellView.getLeft(), cellView.getBottom(), cellView.getRight(), cellView.getBottom(), localPaint);
            }
        }
    }
}
3.main里的方法:</div>
public class Main2Activity extends Activity {
    LineGridView gridview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        gridview = (LineGridView) findViewById(R.id.gridview);
        findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        final MyAdapter myAdapter = new MyAdapter();

        gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                myAdapter.setSelectItem(position);
            }
        });
        gridview.setAdapter(myAdapter);
    }

    private class MyAdapter extends BaseAdapter {

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

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = View.inflate(Main2Activity.this, R.layout.gride_list_item, null);
            LinearLayout ll = (LinearLayout) v.findViewById(R.id.ll);
            if (position == currentItem) {//选中的item
                ll.setBackgroundColor(Main2Activity.this.getResources().getColor(R.color.item_select));
            } else {
                ll.setBackgroundColor(Main2Activity.this.getResources().getColor(R.color.white));
            }
            return v;
        }

        private int currentItem = 0;

        public void setSelectItem(int position) {
            currentItem = position;
            notifyDataSetChanged();
        }
    }
4, activity_main2.xml代码:</div>
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#ffffff"
                tools:context="com.zdy.bbs_bbb.clicktoast.Main2Activity">

            android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/hello_world"/>

            android:padding="3dp"
        android:layout_margin="10dp"
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:background="#ffffff"
        android:gravity="center"
        android:listSelector="@null"
        android:numColumns="3"
        android:stretchMode="columnWidth"
        />
gride_list_item.xml</div>

              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center"
              android:id="@+id/ll"
              android:background="@color/item_select"
              android:orientation= "vertical" >

            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        />

            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="全部"
        />
</div>

     今天我们来模仿一下支付宝钱包首页中带有分割线的GridView,俗称九宫格。先上图,是你想要的效果么?如果是请继续往下看。

                                                         \

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android 交错 GridView,androidgridview
  • Android新手入门2016(10)--GridView
  • 去除GridView选中时的蓝色背景,gridview选中蓝色
  • android gridview画分割线

相关文章

  • 2017-05-26Android java层音频相关的分析与理解(三)调用相关
  • 2017-05-26我的Android进阶之旅------Android 5.0中出现警告的解决方法: Service Intent must be explicit:
  • 2017-05-26Android Studio导入Eclipse项目的两种方法,androideclipse
  • 2017-05-26自定义控件详解(一):Paint类与Canvas类,paintcanvas
  • 2018-01-28TiemPicke 和 DatePicker控件 自定义大小
  • 2017-05-26Android自定义控件来袭(Scroller)
  • 2017-05-26andriod ==和equals,andriodequals
  • 2017-05-26Android UI ListView的使用,androidlistview
  • 2017-05-26安卓开源项目周报1220,安卓开源项目1220
  • 2017-05-26Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知),android.qq5.0

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android Studio导入第三方库(SlidingMenu)教程,androidslidingmenu
    • 自定义水平进度条样式:黑色虚线,进度条虚线
    • Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
    • android实现无限轮播,android实现轮播
    • 从零开始怎么写android native service?
    • Android消息机制Handler解析(源码+Demo)
    • (试笔)一、Android四大框架之ContentProvider的学习与运用,实现SQLite的增删改查。,安卓sqlite增删改查
    • Picasso处理同一url,但资源变了的情况,picassourl
    • android-webview的使用小结,android-webview
    • 基于zookeeper的主备切换方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有