我有一个 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);
}
最佳答案
我已经使用此逻辑完成此操作,首先您必须在适配器 getView 方法中获取 ListView 的高度和 View 的高度,然后在您的点击事件中编写此代码。
int offset = ((listViewheight/2) - (viewHeight/2));
mListView.smoothScrollToPositionFromTop(位置,Math.abs(偏移量));
希望这对你有用。
关于android - 将 ListView 项目放在可见区域的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972509/