我有一个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/