我見過幾篇關於滾動和標題大小調整的文章,並且看到了@MathieuMaree在這個post中的回答,它讓我首先了解如何在滾動ListView時調整標題大小。滾動時更改標題大小
因此,這裏是我的實現:
我有一個包含3個標籤與ExpandableListView一個ViewPager一個FragmentActivity。
這裏是活動的佈局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<bla.bla.bla.views.HeaderFicheEquipe
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
</bla.bla.bla.views.HeaderFicheEquipe>
<RelativeLayout
android:id="@+id/tabView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_below="@+id/Header" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<android.support.v4.view.PagerTabStrip
android:id="@+id/titleStrip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/PagerTabStripText" />
</android.support.v4.view.ViewPager>
</RelativeLayout>
</RelativeLayout>
:首先,我設置了OnScrollListener我ExpandableListView:
list.setOnScrollListener((CardActivity) getActivity());
然後,我實現了OnScrollListener我FragmentActivity:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int totalSize = 0;
View v = view.getChildAt(0);
if (v != null) {
if (elementSizes.size() > 0 && firstVisibleItem <= elementSizes.size()) {
for (int i = 0; i < firstVisibleItem; ++i) {
totalSize += elementSizes.get(i);
}
totalSize -= (v.getTop() - view.getPaddingTop());
if (totalSize > (maxHeightHeader - minHeightHeader))
totalSize = maxHeightHeader - minHeightHeader;
} else {
totalSize = maxHeightHeader - minHeightHeader;
}
header.getLayoutParams().height = maxHeightHeader - totalSize;
header.requestLayout();
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
elementsSize是一個列表,裏面填充了我的第一個元素的大小ST。頭部實際上正在減少,但我的onScroll被調用的方式太多了:當頭部縮小時,我的列表上升,如果用戶將手指放在屏幕上,它會再次使用Scroll上的Android調用,但是信息不正確。我的標題在很短的時間內(從我想要的尺寸跳到最大高度,從最大高度跳到想要的尺寸)發生了很多次變化,直到我達到最小尺寸,再次運行得很好。
我不知道我現在的執行是否正確,如果只是這種情況導致它無法正常工作或者我失去了一些東西。我看到一些應用程序在滾動時正在調整標題大小,但它們看起來工作方式不同:它們縮小標題,並且只有在標題以最小尺寸開始滾動到列表中時才起作用。
如何在頁眉不是最小尺寸時「阻止」列表的滾動?或者我的代碼有問題可以解決?
在此先感謝您的幫助
托馬斯
主要問題是由ViewPager造成的。我嘗試將'header.getLayoutParams()。height'更改爲'header.translationY(translation)',但ViewPager停留在相同的位置,如果我移動包含ViewPager的Layout來跟隨翻譯,大小不會'沒有改變,也沒有完全填滿屏幕。 –
您是否設法使其工作? –
可悲的是,沒有。但是我現在正在開發一個新的應用程序,因此我必須找到解決方案,這是必需的。 –