Zaimplementowałem galerię wykorzystującą widok recyclerview i dodałem obiekt onLayoutChangeListener do elementu podglądu, aby po obliczeniu układu wysokość widoku obrazu została zmieniona tak, aby pasowała do aspektu obrazu stosunek. Działa dobrze po pierwszym otwarciu aktywności, obróceniu urządzenia lub odblokowaniu ekranu, ale po powrocie z innej aktywności nie działa. Metoda jest wykonywana, ale widok obrazu się nie zmienia. Masz pojęcie, co może być przyczyną tego?Zmiana rozmiaru widoku w OnLayoutChangeListener
image.addOnLayoutChangeListener(new View.OnLayoutChangeListener(){
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
ImageView img = (ImageView) v;
Bitmap bm = ((BitmapDrawable) img.getDrawable()).getBitmap();
img.getLayoutParams().height = Utils.scaledHeight(bm.getWidth(), bm.getHeight(), img.getWidth());
img.removeOnLayoutChangeListener(this);
}
});
Debugger pokazuje ustawioną wysokość, ale wyświetlany obraz nie jest tym, czym powinien być.
może mieć coś do zrobienia, gdy ustawisz go naCreate(). Jeśli obracasz telefon, układ jest niszczony i budowany ponownie, tak jak przy pierwszym otwarciu aplikacji. Ale wracając z innej aplikacji, tylko wywołania onResume() ...... może tutaj jest problem .... – Opiatefuchs
Jaka jest określana szerokość? Możesz rozwiązać ten problem za pomocą 'android: adjustViewBounds =" true "' w ImageView. –
@krislarson Dzięki, że rozwiązałeś problem. Nie wiedziałem, że taka opcja istniała. Zamiast używać słuchacza używam właśnie tej opcji i teraz zawsze działa. –