有一个列表适配器:
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
它有效,但是!在另一个屏幕(小于我的)列表太大了。我该怎么办?
答案 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;
这会将绝对像素变成与密度无关的像素(下降),因此每个屏幕上的物理尺寸应该相同。