我尝试在xml文件中设置列表项行高。例如,我有一个listView和一个相应的listAdapter,这个适配器从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="60dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_right"/>
<TextView
android:id="@+id/info"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:padding="20dp"
android:textSize="16sp"
android:textColor="#f96f00"
android:layout_gravity="center"
android:lines="1"
android:ellipsize="end"
/>
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="12sp"
android:paddingRight="10dp"
/>
</LinearLayout>
但是这个60dp
没有效果,无论你设置多少这个高度,膨胀的行视图都有一个固定的高度。当我调整布局中的textview时,行高已更改。为什么会发生这种情况,如何将列表项行的高度分配给固定的指标?
答案 0 :(得分:2)
我查看了LayoutInfalter的infalte函数的源代码,如果root为null,则不会为此视图生成LayoutParams,并且在附加到其他视图时将使用默认的layoutParams。如果设置了root,则inflater将为此视图生成并设置LayouParams。但是,attachToRoot不能设置为true,因此View get将很快添加到适配器视图中。
View v = inflater.inflate(R.layout.filtered_trip_row, parent,false);
这解决了我的问题。
答案 1 :(得分:0)
好吧,没必要恐慌它发生了。
在适配器的getView中,只需在返回视图之前编写此代码。
// Just reset the layout parms before return
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
60*3); // put proper dp pixel conversion here, in hdpi it 3px = 1dp
view.setLayoutParams(params);
return view;
答案 2 :(得分:0)
请在给行充气时检查'parent'参数为null,
View v = inflater.inflate(R.layout.filtered_trip_row, null);
相反,试试这个,
View v = inflater.inflate(R.layout.filtered_trip_row, parent);
现在尝试在getView中设置你的身高。
希望这会对你有所帮助。