这里简单介绍动态设置listview中每一项的高度的方法。
如果直接在adapter中获取控件的LayoutParams会报空指针异常。
比较靠谱的方法是在item布局文件中多嵌套一层LinearLayout:
如下:
listview中加载的item布局:
<LinearLayout
xmlns:android="/apk/res/android"
android:id="@+id/slid_item"
android:orientation="vertical"
android:background="#bcaaa4"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/item_content"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textSize="24sp"
android:text="note"
android:textColor="#fff"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
多嵌套一层布局后就可以在适配器中针对第二层的布局动态设置了。
即(以下是我测试时的代码):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(R.layout.slid_menu_item,null);
LinearLayout l = (LinearLayout) convertView.findViewById(R.id.item_content);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) l.getLayoutParams();
layoutParams.height = (int) list.get(position)/5;
l.setLayoutParams(layoutParams);
return convertView;
}