我有一个ListView包含一个ArrayAdapter包含一天中每个小时的项目,我需要它将包含当前小时的项目放置在ListView可见区域的中心。
我试过了,但它会把项目放在顶部而不是中心。
有没有办法不计算布局高度之类的?
现在我用这个方法,因为我知道这些东西有40度高,但它们不会总是40度高。

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);
}

最佳答案

我已经使用了这个逻辑,首先你必须在适配器get view方法中获取listview的高度和view的高度,然后在click事件中编写这段代码。
int偏移量=((listViewHeight/2)-(viewHeight/2));
smoothscrolltopositionfromtop(position,math.abs(offset));
希望这对你有用。

关于android - 将ListView项放置在可见区域的中心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19972509/

10-12 12:30
查看更多