我有一个ListView
包含一个ArrayAdapter
包含一天中每个小时的项目的项目,我需要它将包含当前小时的项目放置在 ListView 可见区域的中心。
我试过setSelection
了,但它会将项目放在顶部而不是中心。
有什么方法可以在不计算布局高度等的情况下做到这一点?
现在我正在使用这种方法,因为我知道这些物品有 40dip 高,但它们并不总是 40dip 高。
private void centerListView() {
final Calendar c = Calendar.getInstance();
final int hour = c.get(Calendar.HOUR_OF_DAY);
final int listViewProgrammerPixels = listViewProgrammer.getHeight();
final int itemPixels = (int) (40 * getResources().getDisplayMetrics().density + 0.5f);
final int pixelsFromTop = (listViewProgrammerPixels - itemPixels) / 2;
listViewProgrammer.setSelectionFromTop(hour, pixelsFromTop);
}