标签: nestedscrollview

Espresso测试NestedScrollView - "错误执行'滚动到'视图'与id:"

我需要向下滚动浏览我的NestedScrollView以使用Espresso测试我的xml文件,但是我收到错误消息:"在视图上执行'滚动到'时出错",ID为:

其他几个帖子似乎也有类似的问题.

我遵循了以下说明:Android espresso NestedScrollView,如何滚动到底部

现在我得到前面提到的错误,并发现这篇文章:尝试滚动查看,但不显示视图

我的NestedScrollView中没有填充 - 我甚至尝试从XML中删除填充,用于测试目的,但它没有任何区别.

这是我的测试(到目前为止它不应该做任何事情,但向下滚动):

    @Test
    public void testScrollDownAbilityOfDetailsScrollView(){
        goToSpecificItemOnStream(streamItemWithOneImage);

        onView(withId(R.id.end_of_details))
                .perform(ScrollToAction.betterScrollTo());

    }
Run Code Online (Sandbox Code Playgroud)

它使用自定义的Scroll To Action类:

    public final class ScrollToAction implements ViewAction {

    private static final String TAG = ScrollToAction.class.getSimpleName();

    @SuppressWarnings("unchecked")
    @Override
    public Matcher<View> getConstraints() {
        return allOf(withEffectiveVisibility(Visibility.VISIBLE), isDescendantOfA(anyOf(
                isAssignableFrom(ScrollView.class),    isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class))));
    }

    @Override
    public void perform(UiController uiController, View view) {
        if (isDisplayingAtLeast(80).matches(view)) {
            Log.i(TAG, "View is already displayed. Returning.");
            return;
        }
        Rect rect = new Rect();
        view.getDrawingRect(rect);
        if (!view.requestRectangleOnScreen(rect, true /* immediate …
Run Code Online (Sandbox Code Playgroud)

java testing android android-espresso nestedscrollview

8
推荐指数
3
解决办法
4572
查看次数

滚动到折叠视图而不使用工具栏

我正在制作类似于最近android的状态栏的布局.

在此输入图像描述

我有两个Views内部容器.ViewPager和RecyclerView.默认行为应该是当我滚动时RecyclerView,我想ViewPager减小尺寸,反之亦然.

在此输入图像描述

逻辑:

viewPagerMaxHeight = 200;
if scrollTop
  is ViewPager.height > viewPagerMaxHeight?
    YES: Prevent Scroll and Decrease ViewPager size apropriatry
    No: Scroll RecyclerView
if scrollBottom
  did we scroll to position 0?
    YES: Start increasing ViewPager size
    No: Scroll RecyclerView
Run Code Online (Sandbox Code Playgroud)

几个注意事项: - RecyclerView包含各种尺寸的物品. - 有时会删除和添加项目 - 这是一个简单的RecyclerView,而不是在通知中它们相互折叠.

我可以自己构建大部分逻辑但是我无法做出适当的监听器RecyclerView,它将返回滚动的方向和数量.防止RecyclerView滚动是一个奖励

编辑:

我在github上做了一个例子

v.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview nestedscrollview android-nestedscrollview

8
推荐指数
1
解决办法
2068
查看次数

如何使用tabBar实现sliverAppBar

扑文档显示演示为SliverAppBar+ TabBar+ TabBarView with ListView的使用NestedScrollView,这是一个有点复杂,所以我不知道是否有一个简单而明确的方式来实现它。我尝试了这个:

CustomScrollView
  slivers:
    SliverAPPBar
      bottom: TabBar
    TabBarView
      children: MyWidget(list or plain widget)
Run Code Online (Sandbox Code Playgroud)

出现错误:

扑:下列说法被扔建筑滚动(axisDirection:对,物理:
扑:一个RenderViewport预计类型RenderSliv​​er的孩子,但收到类型_RenderExcludableScrollSemantics的孩子。
扑:RenderObjects期望特定类型的孩子,因为他们与布局过程中他们的孩子协调例如,RenderSliv​​er不能是RenderBox的子级,因为RenderSliv​​er不了解RenderBox布局协议。

和

flutter:引发了另一个异常:'package:flutter / src / widgets / framework.dart':失败的断言:3497行pos 14:'owner._debugCurrentBuildTarget == this':不正确。

这是我的代码:

import 'package:flutter/material.dart';

main(List<String> args) {
  runApp(MyScrollTabListApp());
}

class MyScrollTabListApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(title: "aa", home: MyScrollTabListHomePage());
  }
}

class MyScrollTabListHomePage extends StatefulWidget {
  @override
  MyScrollTabListHomePageState createState() {
    return new MyScrollTabListHomePageState();
  }
}

class MyScrollTabListHomePageState …
Run Code Online (Sandbox Code Playgroud)

nestedscrollview flutter flutter-sliver

8
推荐指数
2
解决办法
6515
查看次数

在scrollview或nestedScrollview中看不到Recylerview

我想在NestedScrollView中放置一个RecylerView,如下所示

activity_service_menu.xml

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="HELLO" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="8dp" />
    </LinearLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

ServiceMenuActivity.java

public class ServiceMenuTActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_service_menu_t);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
        rv.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        rv.setHasFixedSize(true);
        rv.setAdapter(new RvAdapter());
    }

    private static class RvAdapter extends RecyclerView.Adapter<RvAdapter.RvHolder> {

        @Override
        public RvHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View serviceMenuItemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_service_menu, parent, false);
            return new RvHolder(serviceMenuItemView);
        } …
Run Code Online (Sandbox Code Playgroud)

android scrollview android-layout android-recyclerview nestedscrollview

7
推荐指数
1
解决办法
5577
查看次数

隐藏另一个布局的浮动操作按钮

我有一个名为的布局FloatingActionButton内部.activity_main.xmlfabBtn

我的应用程序是用一个ViewPager和三个FragmentsI 构建的FloatingActionButton,我希望在第一次Fragment检测到滚动时隐藏它,但是NullPointerException如果用户开始滚动,我会继续获取.

我相信可能是我的片段无法FloatingActionButton从activity_main.xml布局中获取?

这是我的 activity_main.xml

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="lh.com.newme.MainActivity"
xmlns:fab="http://schemas.android.com/tools">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:layout_scrollFlags="scroll|snap"/>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:tabMode="fixed"
            app:layout_scrollFlags="snap|enterAlways"/>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:background="#ffffff" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fabBtn"
        android:layout_marginBottom="@dimen/codelab_fab_margin_bottom"
        android:layout_marginRight="@dimen/codelab_fab_margin_right"
        android:layout_width="wrap_content"
        fab:fab_type="normal"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        app:backgroundTint="@color/fab_ripple_color"
        android:src="@drawable/ic_plus"
        app:fabSize="normal"
        />

    </android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

这是我Fragment想要隐藏的第一个FloatingActionButton:

    public class Ernaehrung …
Run Code Online (Sandbox Code Playgroud)

java android floating-action-button nestedscrollview

7
推荐指数
1
解决办法
1万
查看次数

如果在nestedScrollView中,RecyclerView不会回收

我的目标是让NestedScrollView包含多个包含RecyclerViews的子CardView.

我当前的xml看起来像这样:

    <CardView>
        <RecyclerView/>
    </CardView>

    <CardView>
        <RecyclerView/>
    </CardView>
</NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

如果我在RecyclerViews上将nestedScrollViewEnabled设置为false,则所有内容似乎都按预期工作.但是,recyclerviews中的行不会被回收.调用layoutManager.findFirstVisibleItemPosition()始终返回0,并layoutManager.findLastVisibleItemPosition()始终返回列表中的最后一个项目位置.

有什么建议?

android android-recyclerview nestedscrollview

7
推荐指数
1
解决办法
922
查看次数

在NestedScrollView(Android Studio)中启用intertial scroll

我有一个NestedScrollView(默认滚动活动的一部分),它包含一个CoordinatorLayout和RecyclerView来显示带有一些信息的卡片.布局设计为允许卡片在屏幕外显示太多并且让用户向下滚动它们,但是由于某种原因,滚动没有动量到它应该.我环顾四周,前面的一个问题讲述了如何在ScrollView中禁用intertial scroll(Android ScrollView禁用惯性滚动),所以我尝试反过来:

NestedScrollView mgScrollView = (NestedScrollView) findViewById(R.id.my_games_scroll_view);
mgScrollView.setSmoothScrollingEnabled(true);
Run Code Online (Sandbox Code Playgroud)

但这并没有实现.我测试了mgScrollView.setVerticalScrollBarEnabled(true); 看看我是否甚至将代码应用于正确的视图,因此滚动条也没有显示出来.所以现在我很困惑我是否将这些方法应用到正确的视图,但由于我没有任何其他ScrollViews,我不知道如果我不正确应该在哪里.我知道我可以在xml中添加滚动条,但我还没有找到惯性滚动的xml代码.有没有办法通过Java或xml添加惯性?

这是content_my_games.xml的代码,它是卡的布局(不要与activity_my_games.xml混淆,后者包含CollapsingToolbarLayout和FAB的代码)

谢谢

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_games_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.abhinav.sportswowandroid.MyGamesActivity"
tools:showIn="@layout/activity_my_games">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    tools:context=".MyGamesActivity">

    <android.support.design.widget.CoordinatorLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:context=".MyGamesActivity"
            />

    <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
           app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
            />

    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </RelativeLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

android scrollview android-coordinatorlayout nestedscrollview

7
推荐指数
1
解决办法
2265
查看次数

使用内部的NestedScrollView处理VerticalViewPager的滚动

背景:

我使用的是ViewPager的变体,它不是在水平方向上滚动,而是在垂直方向上滚动.

VerticalViewPager: https ://android.googlesource.com/platform/packages/apps/DeskClock/+/master/src/com/android/deskclock/VerticalViewPager.java

android.support.v4.app.FragmentStatePagerAdapter用于设置内容VerticalViewPager.

我创建并返回一个新的实例android.support.v4.app.Fragment,从FragmentStatePagerAdapter每一次getItem()的FragmentStatePagerAdapter下面所列称为:

@Override
public Fragment getItem(int position) {
   return  PreviewFragment.getNewFragmentInstance(position);
}
Run Code Online (Sandbox Code Playgroud)

PreviewFragment呈现可能不适合屏幕的内容.为了显示不适合屏幕的所有内容,将其android.support.v4.widget.NestedScrollView用作PreviewFragment布局的父元素 .

问题:

内容PreviewFragment按预期滚动到位置0.但是,为了切换到下一页,必须多次执行甩动或滑动操作,因此向位置1的页面滑动是非常困难的.

此外,投掷或滑回到位置0非常困难或几乎不可能.

需要:

Fling或swipe或切换到下一个实例PreviewFragment应该是平滑的.换句话说,滚动内容应该是平滑的,同时请记住,滑动到下一页也应该顺利工作.

如上所述链接到示例项目

android scrollview android-viewpager nestedscrollview android-nestedscrollview

7
推荐指数
1
解决办法
612
查看次数

带有 SliverAppBar 的 ScrollablePositionedList 无法正常工作

这是一个用于创建最小可重现示例的存储库。

我想SliverAppBar在ScrollablePositionedList.builder滚动时隐藏。这是我在此处包含的相关代码段。

          NestedScrollView(
              headerSliverBuilder: (context, innerBoxIsScrolled) => [
                    SliverAppBar(
                      backgroundColor: Colors.blue,
                      expandedHeight: 112,
                      snap: true,
                      pinned: false,
                      floating: true,
                      forceElevated: true,
                      actions: <Widget>[
                        IconButton(
                          icon: Icon(Icons.event),
                        )
                      ],
                      flexibleSpace: SafeArea(
                        child: Column(
                          children: <Widget>[
                            Container(
                              height: kToolbarHeight,
                              child: Column(
                                crossAxisAlignment: CrossAxisAlignment.center,
                                mainAxisAlignment: MainAxisAlignment.center,
                                children: <Widget>[
                                  Text(
                                    'Title',
                                    style: Theme.of(context)
                                        .textTheme
                                        .title
                                        .copyWith(
                                            fontSize: 16, color: Colors.white),
                                  ),
                                  SizedBox(
                                    height: 2,
                                  ),
                                  Text(
                                    'Date',
                                    style: Theme.of(context)
                                        .textTheme
                                        .caption
                                        .copyWith(
                                            fontSize: 10, color: Colors.white),
                                  ), …
Run Code Online (Sandbox Code Playgroud)

scroll-position nestedscrollview flutter flutter-layout sliverappbar

7
推荐指数
1
解决办法
1948
查看次数

具有CollapsingToolbarLayout的RecyclerView在被甩尾时滚动严重

我在使用CollapsingToolbarLayout的RecyclerView中发现了奇怪的行为.当我滚动RecyclerView时 - 它完美地工作.但是当我试图把它扔掉并且足够快地停止它时 - 我可以看到,RecyclerView被"内部"滚动.

糟糕的行为:

在CollapsingToolbarLayout完全折叠之前,RecyclerView不应该是可滚动的,但它是(在normall滚动中,一切都很完美,只有在投掷时才出现问题).

在此输入图像描述

我的布局看起来像这样:

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="kg.nongrate.arseniii.collapsingtoolbarlayouttest.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="240dp"
                android:layout_marginTop="?attr/actionBarSize"
                android:background="@color/colorPrimary"
                android:text="1. Hello World!\n\n\n2. Hello World!\n\n\n3. Hello World!"
                android:textColor="@color/colorAccent"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7"
                android:gravity="center" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimaryDark"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0cc"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

以下是显示我的意思的来源和两个视频: https://NonGrate@bitbucket.org/NonGrate/collapsingtoolbarlayout-recyclerview-bug.git

android android-layout android-recyclerview android-collapsingtoolbarlayout nestedscrollview

6
推荐指数
0
解决办法
654
查看次数