Android中项目顶部的水平粘性标题

时间:2017-01-18 12:03:57

标签: android android-recyclerview

我需要在开始时使用粘贴标题覆盖,在水平回收视图中使用项目。

为了获得结果,我尝试在项目内部进行文本查看,并隐藏/取消隐藏标题。这项工作对标题很好,但不能使它变得粘稠。

现在使用https://github.com/fabionuno/Timehop.StickyHeadersRecyclerView

我已更改StickyRecyclerHeadersDecoration课程,我正在获得以下结果

enter image description here 代码:

public class StickyRecyclerHeadersDecoration extends RecyclerView.ItemDecoration {

  private final StickyRecyclerHeadersAdapter mAdapter;
  private final ItemVisibilityAdapter mVisibilityAdapter;
  private final SparseArray<Rect> mHeaderRects = new SparseArray<>();
  private final HeaderProvider mHeaderProvider;
  private final OrientationProvider mOrientationProvider;
  private final HeaderPositionCalculator mHeaderPositionCalculator;
  private final HeaderRenderer mRenderer;
  private final DimensionCalculator mDimensionCalculator;

  ...

  /**
   * Sets the offsets for the first item in a section to make room for the header view
   *
   * @param itemOffsets rectangle to define offsets for the item
   * @param header      view used to calculate offset for the item
   * @param orientation used to calculate offset for the item
   */
  private void setItemOffsetsForHeader(Rect itemOffsets, View header, int orientation) {
    mDimensionCalculator.initMargins(mTempRect, header);
    if (orientation == LinearLayoutManager.VERTICAL) {
      mTempRect.top = -header.getHeight();
      itemOffsets.top = 0;
      itemOffsets.bottom = 1;
//      itemOffsets.top = header.getHeight() + mTempRect.top + mTempRect.bottom;
//      itemOffsets.top = 0;
    } else {
      mTempRect.left = -header.getWidth();
      itemOffsets.left = 0;
      itemOffsets.right = 1;
//      itemOffsets.left = header.getWidth() + mTempRect.left + mTempRect.right;
//      itemOffsets.left = 0;
    }
  }
  ...
}

必填视图: enter image description here

正如您从两个快照中发现的那样,我的StickyRecyclerHeadersDecoration绘图存在问题。标题'C'应该结束并开始'Caiman'项目

我该如何解决这个问题。 参考符合我的应用程序设计要求的任何其他库也可以。

由于

注意:我会从我的应用程序的标题背景中删除那半透明的蓝色。

0 个答案:

没有答案