Android使用GridView实现表格分割线效果

作者:冰糖葫芦三剑客 时间:2022-05-12 06:59:54 

使用GridView实现表格分割线效果,网格布局表格布局也是可以实现的。

效果如下:

Android使用GridView实现表格分割线效果

1.主函数代码:


package com.example.qd.douyinwu;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* 自定义GridLayout 表格实现系列
* <p>
* https://github.com/li504799868/GridLayoutView
* https://github.com/Eason90/GridBuilder
* <p>
* https://github.com/wimsonevel/AndroidGridLayout
* <p>
* https://blog.csdn.net/swust_chenpeng/article/details/37873215
* tableLayout 实现类似gridview的效果 带分割线
* <p>
* <p>
* https://github.com/LRH1993/AutoFlowLayout 网格布局实现
* https://github.com/dolphinwang/GridLayout
* https://blog.csdn.net/aminy123/article/details/69053339 频道管理
*/
public class SGridViewAcivity extends Activity {
private View view = null;
private GridView gridView;
private List<Map<String, Object>> data_list;
private SimpleAdapter sim_adapter;
private Context mContext;
// 图片封装为一个数组
private int[] icon = {R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
 R.drawable.jz_backward_icon, R.drawable.jz_backward_icon, R.drawable.ic_launcher_background,
 R.drawable.jz_backward_icon, R.drawable.jz_backward_icon, R.drawable.ic_launcher_background,
 R.drawable.jz_backward_icon, R.drawable.ic_launcher_background, R.drawable.ic_launcher_background,
 R.drawable.jz_backward_icon};
private String[] iconName = {"通讯录", "日历", "照相机", "时钟", "游戏", "短信", "铃声",
 "设置", "语音", "天气", "浏览器", "视频"};
private String[] iconNames = {"", "篮球", "击剑", "保龄球", "排球","台球",
 "中国", "666", "688", "999", "888","988",
 "意大利", "122", "222", "112","388","321",
 "法国", "322", "200", "100", "210","188",
 "韩国", "101", "120", "142", "234", "532"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gv);

gridView = (GridView) findViewById(R.id.gridView2);
//新建List
data_list = new ArrayList<Map<String, Object>>();
//获取数据
getData();
//新建适配器
String[] from = {"image", "text"};
int[] to = {R.id.image, R.id.text};
gridView.setAdapter(new ImageAdapter(SGridViewAcivity.this));

// sim_adapter = new SimpleAdapter(this, data_list, R.layout.item, from, to);
//配置适配器
// gridView.setAdapter(sim_adapter);

}
public List<Map<String, Object>> getData() {
//cion和iconName的长度是相同的,这里任选其一都可以
for (int i = 0; i < icon.length; i++) {
 Map<String, Object> map = new HashMap<String, Object>();
 map.put("image", icon[i]);
 map.put("text", iconName[i]);
 data_list.add(map);
}

return data_list;
}

// references to our images
private Integer[] mThumbIds = {
 R.drawable.jz_backward_icon, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume,
 R.drawable.jz_add_volume, R.drawable.jz_add_volume
};

private class ImageAdapter extends BaseAdapter {

private Context mContext;

public ImageAdapter(Context context) {
 this.mContext = context;
}

@Override
public int getCount() {
 return iconNames.length;
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
 ViewHolder viewHolder = null;

if (convertView == null) {
 convertView = LayoutInflater.from(mContext).inflate(R.layout.item, parent, false);
 viewHolder = new ViewHolder();
//  viewHolder.itemImg = (ImageView) convertView.findViewById(R.id.iv_head);
 viewHolder.mText = (TextView) convertView.findViewById(R.id.text);

convertView.setTag(viewHolder);

} else {
 viewHolder = (ViewHolder) convertView.getTag();
 }

// 这里只是模拟,实际开发可能需要加载网络图片,可以使用ImageLoader这样的图片加载框架来异步加载图片
//  imageLoader.displayImage("drawable://" + mThumbIds[position], viewHolder.itemImg);

viewHolder.mText.setText(iconNames[position]);

return convertView;
}

class ViewHolder {
 ImageView itemImg;
 TextView mText;
}
}

}

2.主函数布局:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical">
<GridView
android:id="@+id/gridView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="#999"
android:horizontalSpacing="1dp"
android:verticalSpacing="1dp"
android:padding="1dp"
android:numColumns="6" />
</LinearLayout>

ListView设置分割线的话设置:

android:divider
android:dividerHeight

a、设置GridView背景色。

b、设置水平和竖直方向间隔:android:horizontalSpacing和android:verticalSpacing。

c、设置GridView的item的背景色及其选中后的颜色。

3.适配器布局:


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

<TextView
android:id="@+id/text"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="39dp"
android:textSize="13sp"
android:padding="0dp"
android:text="TextView" />

</LinearLayout>

4.背景选择器gv_one_selector:


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--点击背景选择器-->
<item
android:state_selected="true" >
<shape android:shape="rectangle">
 <solid
 android:color="#CCCCCC"
 />
</shape>
</item>
<item
android:state_pressed="true" >
<shape android:shape="rectangle">
 <solid
 android:color="#CCCCCC"
 />
</shape>
</item>
<item>
<shape android:shape="rectangle">
 <solid
 android:color="#FFFFFF"
 />
</shape>
</item>
</selector>

参考选择器: 


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--表格分割线背景效果-->
<item
android:state_selected="true" >
<shape android:shape="rectangle">
 <solid
 android:color="#CCCCCC"
 />
 <stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
<item
android:state_pressed="true" >
<shape android:shape="rectangle">
 <solid
 android:color="#CCCCCC"
 />
 <stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
 <stroke android:width="1.0px" android:color="#999999" />
</shape>
</item>
</selector>

以上是全部代码。

来源:https://blog.csdn.net/shenggaofei/article/details/105775324

标签:Android,GridView,分割线
0
投稿

猜你喜欢

  • Android 破解视频App去除广告功能详解及解决办法总结

    2022-07-16 23:28:50
  • Android使用FontMetrics对象计算位置坐标

    2023-02-06 15:35:20
  • IDEA 如何控制编辑左侧的功能图标ICON(操作步骤)

    2022-11-04 21:10:05
  • ReentrantLock源码详解--公平锁、非公平锁

    2023-04-22 17:18:56
  • 使用webmagic实现爬虫程序示例分享

    2021-10-08 22:10:26
  • IDEA+maven+SpringBoot+JPA+Thymeleaf实现Crud及分页

    2023-04-14 18:33:46
  • 浅谈Java编程之if-else的优化技巧总结

    2023-06-02 23:28:12
  • SpringBoot项目@Async方法问题解决方案

    2023-11-12 03:55:26
  • Android提高之MediaPlayer播放网络视频的实现方法

    2021-07-03 06:25:29
  • Android仿Iphone屏幕底部弹出半透明PopupWindow效果

    2023-08-17 06:14:43
  • C#多态的三种实现方式(小结)

    2022-12-29 18:10:57
  • GSON实现Java对象的JSON序列化与反序列化的实例教程

    2023-11-23 12:39:02
  • java字符串替换排序实例

    2023-05-30 07:58:29
  • Android自定义SwipeLayout仿QQ侧滑条目

    2023-12-06 14:24:25
  • Java用邻接矩阵存储图的示例代码

    2021-10-05 21:39:18
  • Maven发布封装到中央仓库时候报错:no default secret key

    2022-09-18 17:48:43
  • SpringBoot访问windows共享文件的方法

    2023-11-08 13:37:13
  • C#飞行棋小程序设计分析

    2023-06-05 05:27:24
  • Spring Security中用JWT退出登录时遇到的坑

    2022-05-19 10:30:28
  • Java常量池详解

    2023-05-19 19:36:27
  • asp之家 软件编程 m.aspxhome.com