首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NestedScrollView + TextView

使用NestedScrollView + TextView
EN

Stack Overflow用户
提问于 2017-04-05 23:06:22
回答 1查看 590关注 0票数 2

我可以向您展示比我能告诉您的更好的内容,下面是我的XML代码的结构:

代码语言:javascript
复制
<android.support.design.widget.CoordinatorLayout
    <!-- The upper part of the layout -->
    <android.support.design.widget.AppBarLayout
       <android.support.design.widget.CollapsingToolbarLayout
          <!-- some code inside -->
        </android.support.design.widget.CollapsingToolbarLayout>
      <android.support.design.widget.TabLayout/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
      app:layout_behavior="@string/appbar_scrolling_view_behavior"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    </android.support.v4.view.ViewPager>
</android.support.design.widget.CoordinatorLayout>

因此,正如您所看到的,我有一个ViewPager,其中包含片段并支持滚动。

问题:

我有几个片段,每个片段都有自己的布局,应该向下滚动一次。

一切都很完美,一切都很顺利,但是当我添加一个TextView并用一个NestedScrollView包装它时,它并不像它所想的那样工作。当我向下滚动,它立即停止后,我的手指从屏幕上抬起。

看一看代码:

代码语言:javascript
复制
<android.support.v4.widget.NestedScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:text="@string/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/castList"
        android:nestedScrollingEnabled="false"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</LinearLayout>

如果删除TextView,它就能工作。

你知道那可能是什么吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 01:12:20

我已经解决了这个问题,但是它有一个缺点。当您将NestedScrollView拖下时,您可以看到AppBarLayout发生了轻微的晃动。

这是我的解决方案:

代码语言:javascript
复制
public class FixedScrollingBehavior extends AppBarLayout.Behavior{

private boolean isPositive;

public FixedScrollingBehavior() {
}

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

@Override
public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, float velocityX, float velocityY, boolean consumed) {
    if(velocityY<0 && isPositive){
        velocityY*=-1;
    }
    return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, isPositive);
}

@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed) {
    isPositive = dy > 0;
    if(target instanceof NestedScrollView) {
        if (dy > 20 && dy < 50 && isPositive) {
            dy = 250;
        } else if (dy > 50) {
            dy*=5;
        }
    }
    super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);
}

}

然后在XML文件中应用行为:

代码语言:javascript
复制
<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior=".utils.FixedScrollingBehavior"
    android:fitsSystemWindows="true">

同样,当您拔出NestedScrollView时会有一个bug,但它总比什么都没有好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43243056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档