我有一个带有webview和按钮的布局。按钮是可见的,但一旦滚动webview,按钮就会变为可见。我使用的是ViewTreeObserver,但是由于某些原因,onScrollChanged没有被调用。我是不是误解了onScrollChanged的调用方式?
this.licenseAgreementView = (WebView) findViewById(R.id.licenseAgreementView);
ViewTreeObserver observer = this.licenseAgreementView.getViewTreeObserver();
observer.addOnScrollChangedListener(new OnScrollChangedListener() {
public void onScrollChanged() {
makeButtonVisible();
}
});发布于 2015-09-01 21:55:57
在我的例子中,我必须将GlobalLayoutListener附加到我的scrollView上,然后在LayoutChanged上,我必须添加scrollListener。
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver observer = scrollView.getViewTreeObserver();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
observer.removeOnGlobalLayoutListener(this);
} else {
observer.removeGlobalOnLayoutListener(this);
}
observer.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
//Your code here
}
});
}
});这对我很有效。
发布于 2014-01-23 00:31:32
final View scrollView = findViewById(R.id.scrollView);
final ViewTreeObserver.OnScrollChangedListener onScrollChangedListener =
new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
//your code here -->
makeButtonVisible();
}
};
scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ViewTreeObserver observer = scrollView.getViewTreeObserver();
observer.addOnScrollChangedListener(onScrollChangedListener);
return false;
}
});试试这个,很适合我的。
https://stackoverflow.com/questions/11024407
复制相似问题