ListView高度(实际)

时间:2010-11-11 19:51:04

标签: android listview

有一个列表适配器:

public class timetable_list_adapter extends BaseAdapter 
{
...
}

和动态添加列表:

timetable_list_adapter adapter = new timetable_list_adapter(getApplicationContext(), eventList);
week_day_list.setAdapter(adapter);

list元素是TableLayout

<TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_root_table"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="2">

结果应用程序ListViews的高度错误。 我试着设置高度:

enter code hep = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT); 
TableLayout tl = (TableLayout)findViewById(R.id.item_root_table); 
p.height = 60 * eventList.size(); // INFO: change it after list_itemre

它有效,但是!在另一个屏幕(小于我的)列表太大了。我该怎么办?

1 个答案:

答案 0 :(得分:2)

p.height = 60 * eventList.size();

这些是绝对像素,取决于屏幕的密度,它们将以错误的大小结束。

试试这个:

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);    
DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics);

p.height = 60 * eventList.size() * metrics.density;

这会将绝对像素变成与密度无关的像素(下降),因此每个屏幕上的物理尺寸应该相同。