Android 使用毕加索禁用recyclerview autoscroll
在我的片段中,我有一些带有文本的布局,下面是一个Android 使用毕加索禁用recyclerview autoscroll,android,android-recyclerview,picasso,Android,Android Recyclerview,Picasso,在我的片段中,我有一些带有文本的布局,下面是一个recyclerview。适配器中项目的布局是一个imageView,在其中我使用毕加索从RESTAPI下载了一个图像 问题是,当加载图像时,屏幕会自动滚动到recyclerview中的第一个项目,因此我的文本布局不可见,奇怪的是,它只滚动到第一个项目,而不是每个项目 换句话说:当加载的图像屏幕滚动到第一个图像和上面某个地方的布局时,您打开片段->您看到带有文本的布局->直到您手动滚动到它为止 如何摆脱这种恼人的自动滚动? 我还有一个按钮可以加载更
recyclerview
。适配器中项目的布局是一个imageView,在其中我使用毕加索从RESTAPI下载了一个图像
问题是,当加载图像时,屏幕会自动滚动到recyclerview
中的第一个项目,因此我的文本布局不可见,奇怪的是,它只滚动到第一个项目,而不是每个项目
换句话说:当加载的图像屏幕滚动到第一个图像和上面某个地方的布局时,您打开片段->您看到带有文本的布局->直到您手动滚动到它为止
如何摆脱这种恼人的自动滚动?
我还有一个按钮可以加载更多图像,如果你按下它,回收器在加载图像后不会滚动
下面是我加载图像的方式:
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, p1: Int) {
Picasso.get().load(array_news[p1].image).into(target(viewHolder))
//Picasso.get().load(array_news[p1].image).into(viewHolder.itemView.news_item_image)
}
private fun target(viewHolder: RecyclerView.ViewHolder) = object: Target {
override fun onBitmapLoaded(bitmap: Bitmap?, from: Picasso.LoadedFrom?) {
if (bitmap != null) {
val bmp = Bitmap.createScaledBitmap(bitmap, 400, 400, true)
viewHolder.itemView.news_item_image.setImageBitmap(bmp)
}
}
override fun onPrepareLoad(placeHolderDrawable: Drawable?) {}
override fun onBitmapFailed(e: Exception?, errorDrawable: Drawable?) {}
}
当图像被加载时,你的recyclerview就会得到焦点。相反,当活动打开时,上面的文本视图应该首先获得焦点,而不是recyclerview。 这与毕加索或图像加载无关 转到布局并为textView添加android:focusable=“true”。 如果这没有帮助,那么在创建活动时调用text_view.requestFocus()。 文本视图将获得焦点,屏幕不会向下滚动到recyclerview。您可以尝试以下操作:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
它将防止聚焦问题大多数情况下,特别是当
回收视图
被放置在嵌套滚动视图
中时,请共享您的代码,否则我们将不得不猜测错误是什么。不,没有工作。我甚至尝试在setImageBitmap(bmp)函数之后,将视图传递给适配器并在目标对象中调用requestFocus()。谢谢,这很有帮助。我将android:focusableInTouchMode=“true”放在父布局中(LinearLayout
内部NestedScrollView
)。
android:focusableInTouchMode="true"