[英]Android - ViewPager as a Header in a ListView
TL; DR -ViewPager作為ListView Header會產生一些問題。
我的活動有一個ListView,可以顯示幾種類型的數據。我有一個HeaderView,一個粘性視圖,其余數據是一個“普通”列表項。
我正在使用此庫-> https://github.com/LarsWerkman/QuickReturnListView作為我的列表視圖。
在我的HeaderView中,我有一個用於查看我的用戶的2個個人資料圖像的分頁器。
2個問題:
您可以看到這些圖像中的錯誤,第一個圖像處於試圖將尋呼機向右滾動的狀態,第二個圖像是錯誤
有人遇到過這樣的問題嗎?
我在某些地方讀到,在列表視圖中使用視圖分頁器並不是最佳選擇,有沒有其他方法可以實現我的目標?
我遇到了同樣的問題,嘗試刪除列表視圖的那個第三方庫,那是在我使用同一第三方庫的那天,那確實是個問題。 改用普通的listview。
幾個月前,我做了一個想做的類似的把戲。 我嘗試了Web上幾乎所有關於此快速返回的庫,但所有庫都有bug,不適合我。 也不適用於其中包含viewpager的標頭。
后來我實現了自己的滾動偵聽器。 這不完全是一種快速返回標題模式,但是如果有時間,您可以在其中添加動畫。
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@SuppressLint("NewApi")
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int scrollOffset = 0;
float transitionY;
if (firstVisibleItem > 0) {
scrollOffset += headerHeight;
if (firstVisibleItem > 1) {
scrollOffset += (firstVisibleItem - 1) * cellHeight;
}
}
if (listView.getChildCount() > 0) {
scrollOffset += -listView.getChildAt(0).getTop();
scrollOffset = -scrollOffset;
}
float scrollDelta = scrollOffset - prevOffset;
float nextY = mQuickReturnView.getY() + scrollDelta;
if (nextY < minRawY) {
transitionY = minRawY;
}
else if (nextY > qReturnDelta) {
transitionY = qReturnDelta;
}
else {
transitionY = nextY;
}
mQuickReturnView.setY(transitionY);
prevOffset = scrollOffset;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
而且我在標題中使用了查看尋呼機和pageradapter。 在我的解決方案中,您必須對列表視圖項使用固定大小,並將其聲明為CellHeight ,對標頭使用固定大小。 這是QuickReturnHeight
使用ListView + Header + ViewPager來實現此模式有點困難。
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.