在我的片段中,我有一些带有文本的布局,在该布局之下是recyclerview
。适配器中项目的布局是单个imageView,我在其中使用Picasso从REST API下载图像。
问题在于,加载图像时,屏幕会自动滚动到recyclerview
中的第一项,因此我的文本布局不可见,奇怪的是,它仅滚动到第一项,而不滚动到第一项。
换句话说:打开片段->您会看到带有文本的布局->当图像加载屏幕滚动到第一张图像时,现在布局在上方某处,直到您手动滚动到它时才可见。
如何摆脱这种烦人的自动滚动?
我还有一个按钮可以加载更多图像,如果您按recycler
,则在加载图像后将不会滚动
这是我加载图像的方式:
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?) {}
}
答案 0 :(得分:0)
加载图像后,您的recyclerview便会聚焦。取而代之的是,在打开活动时,上方的文本视图应首先获得焦点,而不是recyclerview。 这与毕加索或图像加载无关。
转到您的布局,然后为您的textView添加android:focusable =“ true”。 如果这样做没有帮助,请在您的活动的onCreate中调用text_view.requestFocus()。 比文本视图更受关注,并且屏幕不会向下滚动到recyclerview。
答案 1 :(得分:0)
您可以尝试以下方法:
<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>
假设包裹LinearLayout
的{{1}}是您的父级布局。只需添加以下行:
RecyclerView
这将防止在大多数情况下出现焦点问题,尤其是将android:focusableInTouchMode="true"
放在RecyclerView