我可以向您展示比告诉您更好的内容,所以这里是我的XML代码的结构:
<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>
因此,如您所见,我有一个ViewPenger
,其中包含片段并支持滚动。
问题:
我有几个片段,每个片段都有自己的布局,应该在一次放纵中向下滚动。
一切都很完美,一切都可以顺利滚动,但是当我添加一个 TextView
并使用 NestedScrollView
包装它时,它无法正常工作。当我向下滚动时,将手指从屏幕上移开后,它会立即停止。
看看代码:
<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>
如果删除文本视图
,它可以工作。
你知道那可能是什么吗?
谢谢你!
我已经解决了这个问题,但是,它有一个缺陷。当您一直向下拖动NestedScrollView
时,您可以看到AppBarLayout
的轻微抖动。
以下是我的解决方案:
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文件中应用该行为:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior=".utils.FixedScrollingBehavior"
android:fitsSystemWindows="true">
同样,当您拉动<code>NestedScrollView</code>时也会出现错误,但这总比什么都没有好。
我使用嵌套的Scrollview来包装recyclerview和其他按钮。它工作得很好,但我注意到当我滚动它时,它并不平滑。请指导如何使滚动平滑。
我有一个奇怪的问题与和(与设计支持库22.2.0) 使用小于的内容,我应该有一个固定的内容。然而,尝试上下滚动内容,我可以得到内容被移位,再也不会出现在自己的位置上。 这里的代码:
利用UIScrollView实现视差滚动效果。在demo中,滑动ScrollView,背景图和文字的滚动速度不一样。直接用ScrollView 的协议,对其子视图的坐标进行随机系数比例的位置移动修正,从而实现视差滚动效果。没有用其他的框架,代码简单。 作者说:原创Demo 转载请注明出处。 [Code4App.com]
我在嵌套滚动视图中有一个回收器视图。当回收器视图中有太多数据时,滚动会滞后。除了将回收器视图从嵌套滚动视图中删除之外,还有什么方法可以解决这个问题吗?
我有一个水平ScrollView,它有两个元素:CardView和水平RecycerView。所以,当用户水平滚动时,我希望这两个元素滚动。 我想有这样的东西:Goal,橙色的线是CardView,黄色的线是RecycerView。当用户滚动时,两个元素滚动,如下所示:Scrolled Goal。 现在在我的应用程序中,当用户滚动时,只有RecycerView滚动。CardView保持在他的位置。
实现循环ScrollView。有以下特色: 1、循环的scrollview 2、类似于tableview的编程方式 3、可定制化的内容 4、灵活运用可用于移步加载图片 5、结构化,可扩展性高 [Code4App.com]