文档章节

转载:Android GridView 实现合并单元格效果

QGlaunch
 QGlaunch
发布于 2015/10/13 15:31
字数 363
阅读 586
收藏 3
package com.example.test;
 
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.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    private static GridView mGridView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mGridView = new GridView(getApplicationContext());
        MAdapter adapter = new MAdapter(mGridView.getContext(), new String[]{
            "你好1","你好2","你好3","你好4","你好5","你好6","你好7","你好8","你好9","你好10",
            "你好11","你好12","你好13","你好14","你好15","你好16","你好17","你好18","你好19","你好20",
            "你好21","你好22","你好23","你好24","你好25","你好26","你好27","你好28","你好29","你好30"
        });
        LinearLayout headLayout = new LinearLayout(getApplicationContext());
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT, 300);
        headLayout.setLayoutParams(params);
        headLayout.setBackgroundColor(Color.RED);
        mGridView.setAdapter(adapter);
        mGridView.setNumColumns(2);
        setContentView(mGridView);
    }
     
    static class MAdapter extends BaseAdapter{
 
        private String[] items;
        private Context context;
        public MAdapter(Context context, String[] items) {
            this.items = items;
            this.context = context;
        }
         
        @Override
        public int getCount() {
            return items.length;
        }
 
        @Override
        public Object getItem(int position) {
            return position;
        }
 
        @Override
        public long getItemId(int position) {
            return position;
        }
         
        @Override
        public int getItemViewType(int position) {
            return super.getItemViewType(position);
        }
         
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
             
            TextView textView = null;
            if (position %4 == 0) {
                textView = new MyText(context);
                AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                        AbsListView.LayoutParams.FILL_PARENT, 100);
                textView.setLayoutParams(params);
                textView.setTextColor(Color.BLACK);
                textView.setTextSize(20);
                textView.setText(items[position]);
                textView.setBackgroundColor(0x88FF0000);
                textView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
            } else {
                textView = new TextView(context);
                AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                        AbsListView.LayoutParams.FILL_PARENT, 200);
                textView.setLayoutParams(params);
                textView.setTextColor(Color.BLACK);
                textView.setTextSize(20);
                textView.setText(items[position]);
                textView.setVisibility(View.VISIBLE);
                if (position %4 == 1) {        // GridView的行高由该行最后一个元素的高度决定
                    AbsListView.LayoutParams params2 = new AbsListView.LayoutParams(
                            AbsListView.LayoutParams.FILL_PARENT, 100);
                    textView.setLayoutParams(params2);
                    textView.setVisibility(View.INVISIBLE);
                }
                textView.setGravity(Gravity.CENTER);
            }
            return textView;
        }
         
        class MyText extends TextView {
            public MyText(Context context) {
                super(context);
            }
            @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                int targetWidth = mGridView.getMeasuredWidth()
                        - mGridView.getPaddingLeft()
                        - mGridView.getPaddingRight();
                widthMeasureSpec = MeasureSpec.makeMeasureSpec(targetWidth,
                        MeasureSpec.getMode(widthMeasureSpec));
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }
        }
    }
}


本文转载自:http://my.oschina.net/u/189899/blog/297039

QGlaunch
粉丝 4
博文 83
码字总数 14169
作品 0
朝阳
私信 提问
Android学习笔记(8) - GridView与ImageView

简单一点吧,就瞧瞧那个Grid的效果,Android提供了一个GridView,不过从APIDemo中看来,它似乎与PC上的GRID差别还 是挺大的,更像那个IconView的感觉。不知道Android中如何实现表格界面?虽然...

红薯
2009/07/15
3.8K
1
Android UI学习和布局优化

FrameLayout 先来看官方文档的定义:FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子...

Jerikc
2014/04/14
451
1
【压岁干货】精彩技术博客+优秀源码集锦

虽然2015年已经过了一月有余,但在中国,好像只有过了春节才算进入新的一年。眼看着这也春节倒计时了,大家好像又都忙了起来,赶项目赶项目…… 从DevStore整理了一些优秀的技术博客和源码作...

牵着蜗牛去西藏
2015/02/04
1K
4
利用GridView实现手机菜单功能

最近刚学习Andrioid 开发,昨日看到大牛级网友hellgv写的关于《Android入门第八篇之GridView(九宫图)》之后想到做一个模仿手机菜单界面的布局,于是有了今天下面的入门级作品,这个作品与大牛...

长平狐
2012/08/14
197
0
找到几个很好的Android开源项目

1.android-swipelistview SwipeListView是一个Android List View实现,实现了自定义ListView单元格,可通过滑动来显示扩展面板。开发者可直接登陆Google Play下载安装其Demo应用。 2.Vitami...

vane_
2014/03/30
320
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部