我在RecyclerView
内使用NestedScrollView
并且它有效。但是当我在RecyclerView
内部使用LinearLayout
时,它会根据手势以不同的速度滚动。滚动听手势,如果我只滑了一下,那么滚动一点,如果我快速向上滑动,那么它滚动得非常快。现在我的问题是RecyclerView
内NestedScrollView
肯定滚动但快速滚动不起作用。但是我快速或慢速向上滑动,RecyclerView
或NestedScrollView
只会滚动一点点。
如何让滚动视图中的NestedScrollView
或RecyclerView
以不同的速度滚动?
答案 0 :(得分:252)
试
recyclerView.setNestedScrollingEnabled(false);
答案 1 :(得分:50)
默认情况下,setNestedScrollingEnabled
仅适用于API-21。
您可以使用ViewCompat.setNestedScrollingEnabled(recyclerView, false);
禁用API-21(Lollipop)之前和之后的嵌套滚动。 Link to documentation
希望这有帮助!
答案 2 :(得分:21)
我正在使用android 16,这是不可能使用setNestedSCrollEnabled方法的,
我最终做了什么来阻止RecyclerView处理Scrolls。
就像在LinerLayoutManager中我做了canScrollHorizontally,canScrollVertically默认返回false。
@Override
public void onMapReady(GoogleMap googleMap) {
map =googleMap;
map.getUiSettings().setZoomControlsEnabled(true);
for (Taxi taxi : taxis) {
u= taxi.getUbicacionActual();
LatLng ubicacion= new LatLng(Double.parseDouble(u.getLatitud()), Double.parseDouble(u.getLongitud()));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(ubicacion,15));
MarkerOptions punto= new MarkerOptions().position(ubicacion);
map.addMarker(punto);
map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.info_title, null);
TextView info1 = (TextView) v.findViewById(R.id.info1);
TextView info2 = (TextView) v.findViewById(R.id.info2);
TextView info3 = (TextView) v.findViewById(R.id.info3);
info1.setText("Fecha: " + u.getFecha());
info3.setText("Longitud: " + u.getLongitud().toString());
info2.setText("Ubicacion: "+obtenerDireccion(u.getLatitud(),u.getLongitud()));
return v;
}
});
}
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Fragment fragmento;
fragmento = new HistorialFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_principal, fragmento)
.commit();
}
});
答案 3 :(得分:5)
经过几次迭代,我想出了一个解决方案。
如果您使用的是RecyclerView,那么:
recyclerView.setNestedScrollingEnabled(false);
如果您在NestedScrollingView中使用LinearLayout,请将LinearLayout放在普通的ScrollView中,然后将其滚动设置为
scrollView.setNestedScrollingEnabled(false);
答案 4 :(得分:1)
android:overScrollMode =“从不
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
答案 5 :(得分:0)
您可以使用ScrollView和ExtendRecyclerView类来覆盖onMeasure方法。这对我有用!
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthSpec, expandSpec);
}
答案 6 :(得分:0)
recyclerView.setNestedScrollingEnabled(false);
有时会很有用。但不建议所有时间。因为它会在重定时器视图中禁用视图回收功能。
备选方案:
使用Recycler视图尝试使用CollapsiveToolbarLayout。 将其他视图放在collapsiveTollbar布局中。
答案 7 :(得分:0)
我也遇到了这个问题。
并升级到26.1.0
修复它。
答案 8 :(得分:0)
在“我的情况”下,我将所有图像放置在可绘制文件夹中,该文件夹中放置了drawable-xxxhdpi文件夹,这就是我的屏幕界面滞后的原因。
答案 9 :(得分:-2)
这是WAI。 NestedScrollView使用Spec“Unspecified”测量其子项。孩子也可以随心所欲地成长。
这基本上等同于NSV和RV的高度。因此就RV而言,它认为它完全显示出来。
用LL包裹你的房车并给你的房车高度。 LL不会将测量规范设置为非标准,因此RV将在您提供的任何DP的设定高度内正确滚动。
此方法的唯一缺点是您无法在RV上执行匹配父项。
答案 10 :(得分:-4)
您应该在任何布局(如LinearLayout)中包装Recycler视图,并将RecyclerView大小设置为常量,如800dp。这样可以在滚动过程中实现平滑滚动和循环播放器视图。
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="800dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>