动态修改ListView文字大小

动态修改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;
	
    @Override
    public 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 stub
			MyAdapter.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

在C#中,要设置ListView中的字体大小,可以通过修改ListView的子项的布局来实现。你可以创建一个新的布局文件,例如list_textfont.xml,然后在该布局文件中设置TextView的字体大小。例如,你可以在布局文件中添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:text="TextView" android:layout_width="fill_parent" android:textSize="20sp" android:id="@+id/list_textfont" android:layout_height="50dp" android:paddingTop="12dp" /> ``` 然后,在设置ListView的适配器时,将该布局文件作为参数传递给ArrayAdapter的构造函数。例如: ```java list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_textfont, data)); ``` 通过这种方式,你可以在ListView中设置字体的大小。请注意,这里的示例是基于Android开发中的Java代码,如果你使用的是C#开发,可以根据相应的语法进行调整。\[1\]\[2\] #### 引用[.reference_title] - *1* [关于listview的字体大小问题!](https://blog.csdn.net/xuyan87101/article/details/6428723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [修改ListView表项的字体大小](https://blog.csdn.net/yangyang031213/article/details/84401305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C#中设置ListView的ColumnsHeader的字体大小,颜色及背景色](https://blog.csdn.net/Micro_Ryan/article/details/130780640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值