【问题标题】:Place ListView item at the center of the visible region将 ListView 项放在可见区域的中心
【发布时间】:2013-11-27 03:50:04
【问题描述】:

我有一个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);
}

【问题讨论】:

  • 显示列表项代码.show your code
  • 有很多方法可以做到这一点。需要看代码
  • 您可以将该项目的内容复制到另一个View,然后将其gravity 属性设置为center
  • 用我目前的做法编辑了我的问题。

标签: android android-listview android-arrayadapter centering


【解决方案1】:

我已经使用这个逻辑完成了这个,首先你必须在适配器 getView 方法中获取 ListView 的高度和 View 的高度,然后在你的点击事件中编写这段代码。

int offset = ((listViewheight / 2) - (viewHeight / 2));

mListView.smoothScrollToPositionFromTop(position,Math.abs(offset));

希望这对你有用。

【讨论】:

    【解决方案2】:

    使用此属性item_layout.setGravity(Gravity.CENTER);

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 2013-04-25
      • 1970-01-01
      • 2013-05-10
      • 2022-11-21
      相关资源
      最近更新 更多