动态设置ListView的高度
2016-03-11 11:27
459 查看
“`
package com.android.customlistviewheight;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
}
主要功能代码在 setListViewHeight()方法中 注意:在setAdapter之后调用方法
package com.android.customlistviewheight;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView; List<String> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = ((ListView) findViewById(R.id.listview)); getList(); MyAdapter myAdapter = new MyAdapter(); listView.setAdapter(myAdapter); setListViewHeight(listView); } private void getList() { list.clear(); for (int i = 0; i < 20; i++) { list.add("数据;;" + i); } } public void setListViewHeight(ListView listView) { ListAdapter adapter = listView.getAdapter(); if (adapter == null) { return; } int totalHeight = 0; for (int i = 0; i < 8; i++) { View listViewItem = adapter.getView(i, null, listView); listViewItem.measure(0, 0); totalHeight += listViewItem.getMeasuredHeight(); } ViewGroup.LayoutParams layoutParams = listView.getLayoutParams(); layoutParams.height = totalHeight + (listView.getDividerHeight()) * (adapter.getCount() - 1); listView.setLayoutParams(layoutParams);//设置listView高度 } class MyAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false); holder.tv = (TextView) convertView.findViewById(R.id.tv); convertView.setTag(holder); } holder = (ViewHolder) convertView.getTag(); holder.tv.setText(list.get(position)); return convertView; } } static class ViewHolder { TextView tv; }
}
主要功能代码在 setListViewHeight()方法中 注意:在setAdapter之后调用方法
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- C#实现ListView选中项向上或向下移动的方法
- Listview加载的性能优化是如何实现的
- C#实现listview Group收缩扩展的方法
- C# listview添加combobox到单元格的实现代码
- ListView 百分比进度条(delphi版)
- Android listview多视图嵌套多视图
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法
- android ListView和ProgressBar(进度条控件)的使用方法
- Android实现ListView异步加载图片的方法