╔══════════════════════════════════════════════╗ ^
║ ImageView ╔══════════════╗ ║ |
║ ║ ║ ║ |
║ ║ Actual image ║ ║ |
║ ║ ║ ║ |60px height of ImageView
║ ║ ║ ║ |
║ ║ ║ ║ |
║ ╚══════════════╝ ║ |
╚══════════════════════════════════════════════╝
<------------------------------------------------>
90px width of ImageView
Mam widok obrazu z pewną domyślną wysokością i szerokością, obrazy są przechowywane w db i chcę skalować obraz zgodnie z szerokością wysokości Imageview. Ponieważ nie chcę, aby podawał wartości domyślne, ponieważ za każdym razem, gdy zmieniam jego wysokość i szerokość, muszę go również zmieniać w kodzie.
Próbuję uzyskać wysokość i szerokość ImageView, ale w obu przypadkach zwracane jest 0.
int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();
zwraca mi 0, nawet jeśli ma domyślną wysokość i szerokość
android:scaleType="centerInside"
?Odpowiedzi:
Moja odpowiedź na to pytanie może ci pomóc:
Następnie możesz dodać pracę skalowania obrazu z poziomu metody onPreDraw ().
źródło
Właśnie ustawiłem tę właściwość, a teraz system operacyjny Android zajmuje się wszystkim.
Użyj tego w pliku layout.xml, w którym zasadziłeś ImageView: D
źródło
Mógłbym uzyskać szerokość i wysokość obrazu dzięki możliwości wyciągania;
źródło
Powodami, dla których ImageView ma wartość 0, jest to, że kiedy je odpytujesz, widok nadal nie wykonał kroków układu i pomiaru. Powiedziałeś tylko widokowi, jak będzie się on „zachowywał” w układzie, ale nadal nie obliczył, gdzie umieścić każdy widok.
Jak decydujesz, jaki rozmiar ma dać widok obrazu? Czy nie możesz po prostu użyć jednej z natywnych opcji skalowania?
źródło
Wpis dla wątku interfejsu użytkownika działa dla mnie.
źródło
twój plik xml:
twój plik Java:
źródło
Myślę, że możesz pozwolić, aby system operacyjny Android zajął się tym za Ciebie. Ustaw typ skali w ImageView na,
fitXY
a wyświetlany obraz będzie miał rozmiar dopasowany do bieżącego rozmiaru widoku.źródło
Najprostszym sposobem jest uzyskanie szerokości i wysokości ImageView w metodzie działania onWindowFocusChanged
źródło
Jeśli utworzyłeś wiele obrazów dynamicznie, spróbuj tego:
// zainicjuj tablicę zdjęć
// utwórz programowo i dodaj do widoku rodzica
// Otóż to. Happy Coding.
źródło
mój przyjacielu przez to nie otrzymujesz wysokości obrazu przechowywanego w db. ale dostajesz wysokość widoku. dla uzyskania wysokości obrazu musisz utworzyć bitmapę z db, s image. i wtedy możesz pobrać wysokość i szerokość podglądu obrazu
źródło