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"