ConstraintLayout beta 5 ImageView RecyclerView sorunları ölçekleme

oy
1

Ben güncellendi beri com.android.support.constraint:constraint-layout:1.0.0-beta5I bir kullanırken garip davranışlar gözlemliyorum ImageViewbir iç ölçekler olduğu ConstraintLayoutbir kullanılanRecyclerAdapter

Ben çoğaltmak az adımlarla bir demo proje yaptık:

Satır oldukça basittir: bir başlık ve bir resim:

<android.support.constraint.ConstraintLayout xmlns:android=http://schemas.android.com/apk/res/android
                                         xmlns:app=http://schemas.android.com/apk/res-auto
                                         android:layout_width=match_parent
                                         android:layout_height=wrap_content
>

<View
    android:id=@+id/header
    android:layout_width=0dp
    android:layout_height=10dp
    app:layout_constraintLeft_toLeftOf=parent
    app:layout_constraintRight_toRightOf=parent
    app:layout_constraintTop_toTopOf=parent
    />

<ImageView
    android:id=@+id/image
    android:layout_width=0dp
    android:layout_height=wrap_content
    android:adjustViewBounds=true
    android:scaleType=centerInside
    app:layout_constraintLeft_toLeftOf=parent
    app:layout_constraintRight_toRightOf=parent
    app:layout_constraintTop_toBottomOf=@+id/header
    />

adaptör şuna benzer:

public class RecAdapter extends RecyclerView.Adapter<BooleanViewHolder> {

private List<Boolean> list;

public RecAdapter(ArrayList<Boolean> list) {
    this.list = list;
}

@Override
public BooleanViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new BooleanViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false));
}

@Override
public void onBindViewHolder(BooleanViewHolder holder, int position) {

    holder.header.setBackgroundColor(list.get(position) ? Color.parseColor(#00FF00) : Color.parseColor(#FF0000));

    holder.image.setImageDrawable(null);
    if (list.get(position)) {
        holder.image.setVisibility(View.VISIBLE);
        holder.image.setImageDrawable(holder.image.getContext().getResources().getDrawable(R.drawable.remove_me));
    } else {
        holder.image.setVisibility(View.GONE);
    }
}

@Override
public int getItemCount() {
    return list.size();
}


static class BooleanViewHolder extends RecyclerView.ViewHolder {
    private final ImageView image;
    private final View header;

    BooleanViewHolder(View itemView) {
        super(itemView);
        header = itemView.findViewById(R.id.header);
        image = (ImageView) itemView.findViewById(R.id.image);
    }
}
}

RecyclerView aşağıdaki gibi adaptör alır:

     recView = (RecyclerView) findViewById(R.id.recView);
//      final StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recView.setLayoutManager(layoutManager);
        ArrayList<Boolean> list = new ArrayList<>();
        list.add(true);
        list.add(false);
        list.add(true);
        list.add(false);
        list.add(true);
        list.add(false);
        list.add(true);
        list.add(false);
        recView.setAdapter(new RecAdapter(list));

Demo işlevselliği: if truebaşlık yeşil renkli ve görüntü görüntülenir. eğer falsebaşlık kırmızı renkli ve ImageViewgizli.

RecyclerView üzerinde aşağı ve yukarı kaydırarak sonra sonuçları:

kullanarak beta-5(solda) ve beta-4(sağda):

Burada

Ben ikisini de kullanarak API 24 ve API 19 ile test yaptım StaggeredGridLayoutManagerveLinearLayoutManager

Bu Google'dan (için bir sorun raporu gibi daha göründüğünü biliyorum AOSP mesele ) ama birisi yaptığım bir hata veya geçici bir çözüm işaret sürece bu amaçla söz konusu yayını kullanacağız.

Oluştur 14/02/2017 saat 12:11
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Bununla, beta5 bir hata olduğuna inanıyoruz wrap_content. Bir böcek açtı ve ConstraintLayout üzerinde çalışan bir Google Mühendisi ile konuştuk. O, hata doğruladı bunu çoğaltılabilir ve daha sonra birkaç gün içinde o sabit masteryüzden giderilecektir bekliyoruz sonraki sürümünde (bilinmeyen tarihi).

Hata raporu bulunduğu buraya .

Öyle Uyarı Fixed in master.2 gün önce itibariyle.

Cevap 15/02/2017 saat 15:46
kaynak kullanıcı

oy
0

Sorun kütüphanenin ana branşında Google tarafından çözüldüğünü ve sonraki yayımlanmasından sonra düzgün çalışacaktır.

Cevap 18/02/2017 saat 16:51
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more