逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述如何在android中使用SwipeRefreshLayout和imageView进入NestedScrollView相关的知识,希望能为你提供帮助。
在我的应用程序中,我想使用SwipeRefreshLayout
和imageView
进入NestedScrollView
我写下面的代码,但是当运行应用程序时显示我滚动RecyclerView
和我不滚动项目的许多滞后。
我的xml代码:
<
?xml version="1.0" encoding="utf-8"?>
<
android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<
android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<
LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:orientation="vertical">
<
include layout="@layout/banner_layout" />
<
android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<
/LinearLayout>
<
/android.support.v4.widget.NestedScrollView>
<
/android.support.v4.widget.SwipeRefreshLayout>
我的java代码:
list.setLayoutManager(linearLayoutManager);
list.setHasFixedSize(true);
list.setNestedScrollingEnabled(false);
list.setAdapter(todayRecyclerAdapter);
我该如何解决它并使用此视图?
答案尽可能避免嵌套滚动。您可以设计如下布局:
<
?xml version="1.0" encoding="utf-8"?>
<
android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<
android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<
/android.support.v4.widget.SwipeRefreshLayout>
您可以像这样定义适配器的数据
.............
List<
Object>
objects=new ArrayList<
>
()
object.add(new ImageData('Image url'))
object.add(new Data('title','subtitle','date'))
.............
由于
RecylerView
适配器支持不同的viewType
s,因此您可以使用适配器的第一个位置作为标题视图类型并使用普通视图类型。
为此你可以参考这个ans Is there an addHeaderView equivalent for RecyclerView?
对于动态标头,您可以创建一个方法,如:----
setHeaderAvailable(boolean isHeaderAvailable){
this.isHeaderAvailable=isHeaderAvailable
}
----
和适配器数据将如下所示:
---
List<
Object>
objects=new ArrayList<
>
()
if(imageUrl!=null){
adapter.setHeaderAvailable(true)
object.add(new ImageData('Image url'))
}else{
adapter.setHeaderAvailable(false)
}
object.add(new Data('title','subtitle','date'))
--
并更新
getItemViewType
方法,如下所示:----
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position) &
&
isHeaderAvailable)
return TYPE_HEADER;
return TYPE_ITEM;
}
---
另一答案用这个替换您的RecyclerView ..
<
android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="200dp" />
另一答案【如何在android中使用SwipeRefreshLayout和imageView进入NestedScrollView】您已在
setAdapter
之前设置此属性recyclerView.setNestedScrollingEnabled(false);
另一答案
<
CoordinatorLayout>
<
SwipeRefreshLayout>
<
RecyclerView>
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<
Appbarlayout>
<
Toolbar>
app:layout_scrollFlags="scroll|snap"/>
<
Relative Layout>
app:layout_scrollFlags="scroll|snap"/>
<
ImageView>
<
/Relative Layout>
<
/Appbarlayout>
<
/SwipeRefreshLayout>
<
/CoordinatorLayout>
Please try in these way it will work.
推荐阅读
- ImageView在android中不起作用
- 移动ImageView(Android)[重复]
- 带有setAdjustViewBounds的Android ImageView在ConstraintLayout中具有无法解释的行为
- 在android [copy]中没有设置从相机到imageview的图像
- 5+ Web项目的最佳免费jQuery和JavaScript动态甘特图
- 最佳5(最佳图像颜色提取JavaScript和jQuery插件)
- 15个最佳高级工作门户HTML模板
- 十大基于AngularJS Bootstrap的最佳高级管理模板
- 10+最佳高级ReactJS管理模板