仿网页列表的实现

2023-11-18

序言

       最近遇到了一项需求,用Android实现网页中的列表效果;首先我便想到了用ListView的方式来实现,由于网页的表格数据通常都是以一行的形式展现的,因此,我把需要展现的数据放在了一行,可是需要展示的数据有很多,一行是无法显示完的,为了能够显示超出的那部分,我便想到了在ListView的外面嵌套了一层水平滚动条(HorizontalScrollView)来实现ListView能够水平移动的效果,虽然效果是初步实现了,可是ListView却无法实现上下对其的效果,虽然可以对ListView的Item设置固定的文本的长度,但是总觉得这不是一个好方法,PS:毕竟数据长度是不可控的嘛;在网上翻阅了各种资料后,发现了一个满足我这个需求的大神博客,但他写的太复杂了,于是最终决定自己来实现。

实现思路

       下面来说说我的思路;首先我们要用到TableLayout这个布局,其次就是以代码的方式不断的往这个布局里塞TableRow,最后在TableLayout的外面套上HorizontalScrollViewScrollView即可

代码实现

<?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">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <HorizontalScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scrollbars="none">

            <TableLayout
                android:id="@+id/tl_device_list_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </HorizontalScrollView>
    </ScrollView>

</LinearLayout>

向TableLayout中添加TableRow

public class MainActivity extends Activity {
    private TableLayout tlContent;
    private List<TextView> tvList = new ArrayList<TextView>();
    private static final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
    private static final int MP = ViewGroup.LayoutParams.MATCH_PARENT;

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

        tlContent = (TableLayout) findViewById(R.id.tl_device_list_content);
        tlContent.setStretchAllColumns(true);

        drawView();
    }

    /**
     * 绘制界面
     */
    private void drawView(){
        initTV();
        addHead();
        for(int i = 0; i < 10; ++i){
            initTV();
            addBody(i);
        }
    }

    /**
     * 初始化TextView
     */
    private void initTV() {
        if (tvList == null) {
            tvList = new ArrayList<>();
        } else {
            tvList.clear();
        }
        for (int i = 0; i < 10; ++i) {
            TextView tv = new TextView(MainActivity.this);
            tv.setTextSize(20.0f);
            tv.setPadding(10, 5, 10, 5);
            tvList.add(tv);
        }
    }

    /**
     * 添加表头
     */
    private void addHead() {
        TableRow row = new TableRow(MainActivity.this);
        row.setBackgroundColor(Color.parseColor("#FFFFFF"));
        for (int i = 0; i < tvList.size(); ++i) {
            tvList.get(i).setText("标题" + i);
            row.addView(tvList.get(i));
        }
        tlContent.addView(row, new TableLayout.LayoutParams(MP, WC));
    }

    /**
     * 添加行
     * @param position 当前行数
     */
    private void addBody(int position) {
        TableRow row = new TableRow(MainActivity.this);
        if (position % 2 == 0) {
            row.setBackgroundColor(Color.parseColor("#CCCCCC"));
        } else {
            row.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
        for (int i = 0; i < tvList.size(); ++i) {
            tvList.get(i).setText("内容" + i);
            row.addView(tvList.get(i));
        }
        tlContent.addView(row, new TableLayout.LayoutParams(MP, WC));
    }
}         row.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
        for (int i = 0; i < tvList.size(); ++i) {
            tvList.get(i).setText("内容" + i);
            row.addView(tvList.get(i));
        }
        tlContent.addView(row, new TableLayout.LayoutParams(MP, WC));
    }
}

效果展现

这里写图片描述

总结

       这个方法明显不是一个最优的办法,但却是一种比较简单的实现方式;毕竟在Android中实现网页的效果还是太鸡肋了,如果非要实现的话,最简单的还是搞个网页,然后把url地址丢过来直接展示比较容易吧。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仿网页列表的实现 的相关文章

  • C++之继承<inheritance>

    目录 前言 继承 1 继承的概念与定义 1 1 继承的概念 1 2 继承的定义 2 基类和派生类对象赋值转换 3 继承中的作用域 4 派生类的默认成员函数 5 继承与友元 6 继承与静态成员 7 复杂的菱形继承及菱形虚拟继承 8 继承的总结
  • 前端响应式布局原理与实践

    前言 作为一个前端开发者 响应式网站开发是必备技能之一 响应式有它的很好的优点 也有它一定的缺点 这就需要我们在开发的时候做出取舍 对于内容较少 主要为展示类网站 故采用响应式 对于内容多 管理类的网站采用分开开发的方式 不同设备采用不同的
  • Ubuntu 16.04 设置pycharm 2018版本的 桌面快捷启动方式

    在ubuntu环境中每次使用pycharm需要到它的安装目录中执行 pycharm sh来启动pycharm 比较麻烦 那么如何设置快捷方式呢 首先Ubuntu下所有的快捷方式都在 usr share applications 解压 这里我
  • Dubbo启动错误

    加完Nacos配置后报错 信息 DUBBO The registry
  • 第十七篇:Unity/UE4如何实现Cave空间(一)

    首先什么叫CAVE空间 CAVE是围绕着观察者具有多个图像画面的虚拟现实系统 多个投影面组成一个虚拟空间 理论上CAVE是基于计算机图形学把高分辨率的立体投影技术和三维计算机图形技术 音响技术 传感器技术等综合在一起 产生一个供多人使用的完
  • css改变svg颜色_如何使用CSS混合模式和SVG动态更改产品图像的颜色

    css改变svg颜色 To better explain that title right off the bat here s what we re about to learn and it s easier than you thin
  • 《算法设计与分析》学习笔记

    目录 算法基本概念 算法的定义 算法复杂度分析 渐近记号 渐近上界记号O 渐近下界记号 渐近紧确界记号 非渐近紧确上界记号o 非渐近紧确下界记号 渐进记号极限定义 分治 分治步骤 递归树 编辑代入法 主方法 改变变量 二叉树 堆 建堆 堆排
  • C语言 基础知识之static(static是什么,static的好处,static的使用和作用)

    一 static是什么 static是C C 中的修饰符 可以用来修饰变量 也可以用来修饰函数 二 static的好处是什么 1 隐藏变量或函数 隔离错误 有利于模块化程序 在编程中 难免会用到全局变量 全局变量的作用域是整个源程序 当一个
  • virtualbox虚拟机安装Ubuntu异常处理:FATAL: NO bootable medium found! System halted

    遇到的问题 当virtualbox虚拟机安装linux系统 异常处理 FATAL NO bootable medium found System halted 问题的原因 没有找到iso文件来安装系统 解决的方案 下载镜像文件 centos
  • InnoDB Rollback Segment & Undo Page Deallocation实现源码分析

    InnoDB Rollback Segment Undo Page Deallocation实现源码分析 4月 23rd 2012 发表评论 Trackback 1 InnoDB Rollback Segment 1 1 1 Rollbac
  • 计算机视觉人脸检测与识别

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 TOC 文章目录 使用opencv进行人脸检测 文件目录 二 init文件内容 shishi文件内容 coding utf 8 加载训练数据集文件 准备识别的图片
  • 基于微信小程序的短视频管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端框架 VUE 数据库 MySQL5 7 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Maven项目 是 目录 一 项目简介 二
  • NEZUKO: 1——202201152003

    NEZUKO 1 202201152003 About Release Back to the Top Name nezuko 1 Date release 21 Aug 2019 Author yunaranyancat Series n

随机推荐

  • 五一假期出行的数据爬取和分析

    出来旅行 用手机编辑的 代码格式有可能出现问题 等回去用电脑进行修改 你们的萧萧吖 随着旅游业的迅速发展 越来越多的人选择在假期去旅游 五一假期是国内最热门的旅游季节之一 吸引了大量的游客前往各个景点 本篇博客将介绍如何使用 Python
  • XXE漏洞原理

    XXE漏洞是XML外部实体注入漏洞 那什么是外部实体呢 XML DTD 1 文档类型定义 DTD 可定义合法的XML文档构建模块 它使用一系列合法的元素来定义文档的结构 2 DTD 可被成行地声明于 XML 文档中 也可作为一个外部引用 P
  • 机器学习基础 第三章 分类算法

    1 线性分类器 感知器 1 1 感知器 有如图1 1所示的两类数据希望找到 如果想把他们分开 最简单的方法就是用图中的绿线将它们分开 显然绿线的方程为 t 0 1x 1y 1 1 1 t omega 0 omega 1 x omega 1
  • Linux的缓存内存(cache memory)

    PS 为什么Linux系统没运行多少程序 显示的可用内存这么少 其实Linux与Win的内存管理不同 会尽量缓存内存以提高读写性能 通常叫做Cache Memory 为什么Linux系统没运行多少程序 显示的可用内存这么少 其实Linux与
  • PyTorch模型训练集正常收敛,但验证集准确率稳定在10%并保持不变

    问题描述 训练过程中遇到的一个Bug 可能是跟Torch本身有关 如下图和题目所示 经过多轮训练 训练准确率开始收敛 但是验证准确率保持在10 左右不变 排查手册 一般来说这表示模型本身可能存在问题 下面列出一个排查手册 检查是否是数据问题
  • C#中的DataGridView中添加按钮并操作数据

    目录 背景 一 在DataGridView中显示需要的按钮 二 给DataGridView添加事件 可以通过按钮来操作数据库 三 在按钮上鼠标箭头变成小手样式 四 总结 背景 最近在项目中有需求需要在DataGridView中添加 删除 修
  • 十进制数转8421BCD码

    十进制数转8421BCD码就是把十进制数字每一位都用4个二进制位所组成的数字代替 十进制数 8421码 余3码 0 0000 0011 1 0001 0100 2 0010 0101 3 0011 0110 4 0100 0111 5 01
  • 拿下60亿流量的《惊雷》都是哪些人在听?python帮你统计出来

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 作者 听不来喊麦的C君 PS 如果你处于想学Python或者正在学习Python Python的教程不少了吧 但是是
  • phpstudy安装及简单使用

    前言 我们都知道如果要搭建网站 就需要借助Apache或者Nginx的帮助 当然也少不了数据库的使用 我们自行下载Apache和MySQL等数据库 需要我们进行配置才能使用 这对于一些小白非常的不方便 而且出现一些错误不会解决可能会耽搁很长
  • MySQL执行顺序

    mysql执行顺序如下 1 from 阶段 2 where 阶段 3 group by 阶段 4 having 阶段 5 select 阶段 6 order by 阶段 7 limit 阶段 问题 为什么别名不可以使用在where中 但可以
  • 队列以及Java实现

    了解队列 在我们的现实生活中会经常看见队列的出现 如 排队买奶茶 叫号服务和餐厅的排号 我们去餐厅准备吃饭时 由于人多只能排队等待就餐或换一家人少的餐厅 餐厅为了让服务更加的好 就会使用排队系统 排队系统完全模拟了人群排队全过程 通过取票进
  • el-cascader 懒加载回显问题解决

    解决思路 在页面初始化技术后根据组件的ref 直接给组件的inputValue和inputTerxt赋label的值 前提是你之前已经保存过这个值 ref的部分属性 代码
  • 靠Python做副业一年买了房:未来五年的风口行业 ,90%的人都不知道

    程序开发领域有这样一句话 人生苦短 我用Python 这本是开发者大佬Bruce Eckel的金句 Life is short you need Python 有趣的是 很多人并非专职程序员 但却把这句话奉为神谕 所以Python究竟有什么
  • Python中MNE库的脑电地形图绘制

    脑电地形图在进行和 源 相关的分析时很有用 可以直观的看出各个电极的激活情况以及其随时间的变化 在标准的脑电数据中都是有电极的坐标位置的 会用EEGLab的可能对这块比较熟悉了 实际MNE库中也有相关的定义和实现 可以导入外部的电极数据 或
  • top 内存耗用:VSS/RSS/PSS/USS

    转载 http blog csdn net adaptiver article details 7084364 Terms VSS Virtual Set Size 虚拟耗用内存 包含共享库占用的内存 RSS Resident Set Si
  • Python-OpenCv读取,输出图像

    读取图像 调用imread函数生成像素点矩阵 img cv2 imread lll jpg 读图片 print函数查看矩阵 print img 输出图像 调用imshow函数 新建一个show py文件写输出函数分别调用 resize函数设
  • C#中Ilist与list的区别小结

    常见问题 Ilist lt gt 本身只是一个泛型接口 既然是接口当然不能实例化 只能用如下方法 IList
  • python的print打印颜色设置

    1 顺序 显示方式 前景颜色 背景颜色 2 顺序非固定 但尽量按默认书写方式 3 也可以在input中输出使用 4 格式 print 033 显示方式 前景颜色 背景颜色m 033 0m 显示方式 意义 显示方式 默认 0 高亮显示 1 下
  • 读书笔记:Bi-Directional Cascade Network for Perceptual Edge Detection

    目录 摘要 1 介绍 2 相关工作 3 方法 3 1公式 3 2BDCN的架构 3 3网络训练 4 实验 4 1数据集 摘要 利用多尺度表示对于提高不同尺度对象的边缘检测至关重要 为了利用多尺度提取边缘 我们提出了一种全向级联网络 BDCN
  • 仿网页列表的实现

    序言 实现思路 代码实现 效果展现 总结 序言 最近遇到了一项需求 用Android实现网页中的列表效果 首先我便想到了用ListView的方式来实现 由于网页的表格数据通常都是以一行的形式展现的 因此 我把需要展现的数据放在了一行 可是需