Muszę ustawić wysokość na ImageView jako matchparent programatically.if jest stała wysokość wiem jak ustawić.
ale jak mogę ustawić to jako nadrzędne?
EDYTOWAĆ:
w rzeczywistości wysokość układu nadrzędnego jest dynamiczna, więc muszę ustawić wysokość obrazu jako wysokość elementu nadrzędnego.
Odpowiedzi:
zainicjuj LayoutParams.
przypisz szerokość i wysokość rodzica i przekaż je do metody setLayoutParams w imageview
źródło
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
źródło
źródło
imageView.setLayoutParams (new ViewGroup.MarginLayoutParams (width, ViewGroup.LayoutParams.MATCH_PARENT));
Typ parametrów układu zależy od nadrzędnej grupy widoków. Jeśli umieścisz niewłaściwy, spowoduje to wyjątek.
źródło
Dla użytkowników Kotlin
val params = mImageView?.layoutParams as FrameLayout.LayoutParams params.width = FrameLayout.LayoutParams.MATCH_PARENT params.height = FrameLayout.LayoutParams.MATCH_PARENT mImageView?.layoutParams = params
Tutaj użyłem,
FrameLayout.LayoutParams
ponieważ mójImageView
rodzic widoki ( ) jestFrameLayout
źródło
Miałem ten sam problem. Rozwiązane przez najpierw ustawienie:
imageView.setMinHeight(0); imageView.setMinimumHeight(0);
I wtedy :
setMinHeight jest definiowana przez ImageView, podczas gdy setMinimumHeight jest definiowana przez View. Zgodnie z dokumentacją używana jest większa z dwóch wartości, więc obie muszą być ustawione.
źródło
Możesz spróbować tego w przypadku, gdy chcesz dopasować rodzica. Rozmieszczenie wymiarów to szerokość i wysokość w kolejności
web = new WebView(this); web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
źródło
Możesz użyć stałej MATCH_PARENT lub jej wartości numerycznej -1.
źródło