动态修改ListView文字大小

写了一个MyAdapter(继承了BaseAdapter)去实现数据和UI的显示。通过滑动SeekBar来改变MyAdapter的getView方法中View的字体大小进而实现了改变ListView中文字大小的效果。

效果图:

          

1 MainActivity的布局文件main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><ListView android:id="@+id/listview01"android:layout_width="fill_parent"android:layout_height="wrap_content"></ListView><SeekBar android:id="@+id/seekbar01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"/>
</RelativeLayout>

2 ListView的item布局文件main_listview01_item.xml

<?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" ><TextView android:id="@+id/textView01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="23sp"/><TextView android:id="@+id/textView02"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="15sp"/></LinearLayout>

3 MyAdapter源码

/*** 我的适配器* @author haozi**/
public class MyAdapter extends BaseAdapter {public static int PROGRESS;private Context context;private List<? extends Map<String, ?>> mData;private int mResource;private String[] mFrom;private int[] mTo;private LayoutInflater mLayoutInflater;/*** 我的适配器的构造方法* @param context 调用方的上下文* @param data 数据* @param resource* @param from * @param to*/public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to){this.context = context;this.mData = data;this.mResource = resource;this.mFrom = from;this.mTo = to;this.mLayoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);}/*** 系统在绘制ListView之前,将会先调用getCount方法来获取Item的个数*/public int getCount() {return this.mData.size();}public Object getItem(int position) {return this.mData.get(position);}public long getItemId(int position) {return position;}/*** 每绘制一个 Item就会调用一次getView方法,* 在此方法内就可以引用事先定义好的xml来确定显示的效果并返回一个View对象作为一个Item显示出来。* 也 正是在这个过程中完成了适配器的主要转换功能,把数据和资源以开发者想要的效果显示出来。* 也正是getView的重复调用,使得ListView的使用更 为简单和灵活。* 这两个方法是自定ListView显示效果中最为重要的,同时只要重写好了就两个方法,ListView就能完全按开发者的要求显示。* 而 getItem和getItemId方法将会在调用ListView的响应方法的时候被调用到。* 所以要保证ListView的各个方法有效的话,这两个方法也得重写。*/public View getView(int position, View contentView, ViewGroup parent) {contentView = this.mLayoutInflater.inflate(this.mResource, parent, false);   // 设置contentView的内容和样式,这里重点是设置contentView中文字的大小for(int index=0; index<this.mTo.length; index++){TextView textView = (TextView) contentView.findViewById(this.mTo[index]);textView.setText(this.mData.get(position).get(this.mFrom[index]).toString());if(index == 0){textView.setTextSize(23+PROGRESS);}else if(index == 1){textView.setTextSize(15+PROGRESS);}}return contentView;}
}

4 MainActivity源码

/*** 入口Activity* @author haozi**/
public class MainActivity extends Activity {private ListView mListView;private SeekBar mSeekBar;private MyAdapter myAdapter;private ArrayList<HashMap<String, String>> data;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);// 代码和控件绑定this.mListView = (ListView) this.findViewById(R.id.listview01);this.mSeekBar = (SeekBar) this.findViewById(R.id.seekbar01);// 准备数据initData();// 设置SeekBar变化监听this.mSeekBar.setOnSeekBarChangeListener(new MSeekBarOnSeekBarChangeListener());}/*** 准备数据*/private void initData(){data = new ArrayList<HashMap<String,String>>();for(int index=0; index<5; index++){HashMap<String, String> map = new HashMap<String, String>();String textView01content = "textView01content" + index;String textView02content = "textView02content" + index;map.put("textView01", textView01content);map.put("textView02", textView02content);data.add(map);}// 创建适配器,并把数据交给适配器this.myAdapter = new MyAdapter(this, data, R.layout.main_listview01_item, new String[]{"textView01", "textView02"}, new int[]{R.id.textView01, R.id.textView02});// 为listView添加适配器this.mListView.setAdapter(this.myAdapter);}/*** mSeekBar的变化监听* @author haozi**/class MSeekBarOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeListener{public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {// TODO Auto-generated method stubMyAdapter.PROGRESS = progress/10;MainActivity.this.mListView.setAdapter(MainActivity.this.myAdapter);}public void onStartTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}public void onStopTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}}
}

demo下载链接地址:http://download.csdn.net/detail/hello_haozi/4290909

动态修改ListView文字大小相关推荐

  1. jQuery插件FontSizer实现自定义动态调整网页文字大小

    非常简单: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  2. vue 动态设置 echarts 画布大小 更新图表数据

    在筛选条件修改后,echarts的图表需要动态修改图表. 动态修改echarts 画布大小 监听width,height的改变,在更新图表时,使用resize()方法更新图表画布的大小 const c ...

  3. 有什么办法改变迅捷CAD编辑器文字大小

    在我们使用CAD制图的过程中,会经常的使用上文字.比如要标注单行文字和多行文字等等.有的时候文字的比例和整个的图会很不协调.我们应该怎么样修改文字的大小呢.今天和大家一起分享一下怎么修改CAD文字大小 ...

  4. iOS 修改文字大小以适配lable高度宽度

    iOS 修改文字大小以适配lable高度宽度 在开发中,我们也许会遇到根据文字多少动态修改lable的高度,但也有lable高度和宽度是固定的,这个时候如果想让文字显示完全,就必须修改文字字体大小.动 ...

  5. 微信开发修改button里的字体大小_在微信小程序中如何修改文字大小

    这篇文章主要介绍了微信小程序实现点击按钮修改文字大小功能,涉及微信小程序事件绑定及setData动态修改Page页面data数据,进而控制页面元素属性动态改变的相关操作技巧,需要的朋友可以参考下 本文 ...

  6. Eclipse 答疑:Eclipse 如何更换夜间及外部主题?如何修改代码样式、背景颜色、字体大小?为何注释文字大小不一?

    文章目录 前言 一.更换 Eclipse 自带黑色"Dark"主题 二.设修改代码的样式及背景颜色 三.设置代码字体和大小(解决注释字体不一原因) 四.下载外部主题进行更换 4.1 ...

  7. PLSQL developer14/PLSQL14如何修改字体和文字大小,如何修改背景颜色?

    PLSQL developer14/PLSQL14如何修改字体和文字大小,如何修改背景颜色? 不解释,直接上图.

  8. 安卓动态修改系统状态栏背景和文字颜色,以及动态显示或隐藏系统状态栏

    关于动态修改系统状态栏背景.字体和图标颜色,以及动态显示或隐藏系统状态栏,一直都是都是许多项目的常规需求.但是,由于不同版本间的兼容性差异,网上的实现方法多种多样.并且,许多方法都会存在这样.那样的不 ...

  9. Android 10.0 修改Recovery字体图片的大小(正在清理)文字大小

    1.概述 在10.0系统产品开发中,进行Recovery 恢复出厂设置时 发现 真正清理的 字体小了 产品不满意 所以要求改大一点字体 于是 就只能去看Recovery部分的源码 这部分都是C 语言的 ...

最新文章

  1. MS DTC 无法正确处理 DC 升级/降级事件的解决
  2. scanf 接收 空格 输入_你需要知道的scanf函数用法
  3. oracle 19c补丁下载,rpm 安装oracle 19c,通过补丁升级到19.8
  4. windows 导出 oracle,windows 环境下oracle导入导出
  5. 洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块
  6. mysql变更AUTO_INCREMENT值
  7. 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算
  8. leetcode刷题:数组的最大子序和
  9. [django]list_display 中包含外键内的字段
  10. 2019牛客多校 Round2
  11. Smart3D系列教程5之 《案例实战演练2——大区域的地形三维重建》
  12. 洛谷P4315 月下“毛景树”(树剖+线段树)
  13. LSL学习笔记(4)
  14. 【BJOI2019】勘破神机(下降幂转自然幂)(第一类斯特林数)(特征方程)
  15. 大学生科研项目选题计算机,大学生科研计划项目及选题.ppt
  16. plsql 连接 虚拟机Linux下的Oracle数据库 失败
  17. AGC012 - E: Camel and Oases
  18. 如何突出显示重点数据?
  19. 2021西门子比赛东北赛区一等奖WINCC画面
  20. tcpdump抓包,并保存为文件

热门文章

  1. Jiss Wang:Whitecoin白币新生态体系中的落地应用
  2. socket或pipe 一端断开; errno 104:connetction reset by peer的错误分析
  3. 南京华为云搭建总结之Oracle环境搭建以及数据泵数据的导入
  4. 马云不在云栖大会的第一年,想他
  5. 微信公众平台开发之在线翻译功能
  6. 百度地图+mapv聚合实例
  7. ios开发: APNS消息推送实现
  8. 易语言第十七课-------悬浮窗制作
  9. 我的世界启动器c语言源码,CSGO辅助程序(我的世界启动器)
  10. ZOJ3939 The Lucky Week