Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅限于上半部分的布局限制_Java_Android - Fatal编程技术网

Java 仅限于上半部分的布局限制

Java 仅限于上半部分的布局限制,java,android,Java,Android,我设法在swiperefreshlayout包装器中加载了一个webview,但是我的webview的第一部分是一个可向上/向下滚动的html div。因此,当向下滚动时,滑动刷新布局将起作用。我可以将滑动刷新布局限制在屏幕的第一季度吗 首先,您需要在WebView中广播滚动更改。例如,通过将扩展名与回调一起使用,并通知更改和更新 public class ObservableWebView extends WebView { private OnScrollChangedCallbac

我设法在swiperefreshlayout包装器中加载了一个webview,但是我的webview的第一部分是一个可向上/向下滚动的html div。因此,当向下滚动时,滑动刷新布局将起作用。我可以将滑动刷新布局限制在屏幕的第一季度吗


首先,您需要在WebView中广播滚动更改。例如,通过将扩展名与回调一起使用,并通知更改和更新

public class ObservableWebView extends WebView
{
    private OnScrollChangedCallback mOnScrollChangedCallback;

    public ObservableWebView(final Context context)
    {
        super(context);
    }

    public ObservableWebView(final Context context, final AttributeSet attrs)
    {
        super(context, attrs);
    }

    public ObservableWebView(final Context context, final AttributeSet attrs, final int defStyle)
    {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onScrollChanged(final int l, final int t, final int oldl, final int oldt)
    {
        super.onScrollChanged(l, t, oldl, oldt);
        if(mOnScrollChangedCallback != null) mOnScrollChangedCallback.onScroll(l, t, oldl, oldt);
    }

    public OnScrollChangedCallback getOnScrollChangedCallback()
    {
        return mOnScrollChangedCallback;
    }

    public void setOnScrollChangedCallback(final OnScrollChangedCallback onScrollChangedCallback)
    {
        mOnScrollChangedCallback = onScrollChangedCallback;
    }

    /**
     * Implement in the activity/fragment/view that you want to listen to the webview
     */
    public static interface OnScrollChangedCallback
    {
        public void onScroll(int l, int t, int oldl, int oldt);
    }
}
然后,只需聆听特定阈值的更改,即可启用禁用
SwipeToRefreshLayout
。如下面的示例所示

wv = (ObservableWebView) findViewById(R.id.scorllableWebview);
wv.setOnScrollChangedCallback(new OnScrollChangedCallback() {

    public void onScroll(int l, int t, int oldl, int oldt) {

        if (t> oldt) {
            Timber.d("Swipe UP");
            // Check if it's top page, knowing height of the items
            // and enable swipe to refresh
            swipeToRefresh.setEnabled(true);
        }
        else if (t< oldt) {
            Timber.d("Swipe Down");
            // Again if scrolled enough to bottom, disable again
            swipeToRefresh.setEnabled(false);
        }
        Timber.d("Scrolling....");
    }
});
wv=(observeWebView)findViewById(R.id.scorlableWebView);
wv.setOnScrollChangedCallback(新的OnScrollChangedCallback(){
Croll上的公共void(int l,int t,int oldl,int oldt){
如果(t>oldt){
木材d(“刷起”);
//检查是否是首页,知道项目的高度
//并启用滑动刷新
swipeToRefresh.setEnabled(true);
}
else if(t
我的意思是添加一些代码,这太宽泛了。谢谢@GensaGames,我将setOnScrollChangedCallback添加到MainActivity java文件中,但是我应该在哪里添加ObservableWebView类?是否与主活动位于同一文件夹中?