отключить автопрокрутку в режиме повторного просмотра с помощью Picasso - PullRequest
0 голосов
/ 24 октября 2018

В моем фрагменте у меня есть какой-то макет с текстом, а под этим макетом есть recyclerview.Макет для элементов в адаптере представляет собой единый imageView, в котором я загружаю изображение из REST API с помощью Picasso.

Проблема в том, что при загрузке изображения экран автоматически прокручивается до первого элемента в recyclerview, поэтому моя раскладка с текстом не видна, и, что странно, она прокручивается только до первого элемента, а не каждого.

Другими словами: вы открываете фрагмент -> вы видите макет с текстом -> когда изображение загружено, экран прокручивается до первого изображения, а макет теперь где-то выше, не виден, пока вы не прокрутите его вручную.

Как мне избавиться от этой надоедливой автопрокрутки?

У меня также есть кнопка для загрузки других изображений, и если вы нажмете на нее recycler выиграно`t прокручивать после загрузки изображений

Вот как я загружаю изображение:

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?) {}
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете попробовать это:

<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, который включает RecyclerView, является вашим родительским макетом.Просто добавьте эту строку:

android:focusableInTouchMode="true"

Это предотвратит проблему с фокусировкой в большинстве случаев , особенно когда RecyclerView помещен в NestedScrollView

0 голосов
/ 24 октября 2018

Когда изображение загружено, ваш просмотрщик просто получает фокус.Вместо этого при открытии действия сначала должен фокусироваться текстовое представление, а не повторное представление.Это не имеет ничего общего с Пикассо или загрузкой изображений.

Перейдите к макету и добавьте android: focusable = "true" для вашего textView.Если это не поможет, тогда вызовите text_view.requestFocus () в onCreate вашей деятельности.После этого текстовое представление получит фокус, и экран не будет прокручен вниз до повторного просмотра.

...