ustawia wysokość widoku obrazu jako dopasowaną programowo


84

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.


2
Wypróbowałem wszystkie metody wymienione w odpowiedziach. ale to nie jest ustawienie wysokości jako rodzica dopasowania :(
andro-girl

1
Powinieneś przejrzeć zaakceptowaną odpowiedź
CularBytes

Odpowiedzi:


-20

zainicjuj LayoutParams.

przypisz szerokość i wysokość rodzica i przekaż je do metody setLayoutParams w imageview


3
nigdy nie należy przekazywać rodzicom rzeczywistych wymiarów. Zawsze używaj MATCH_PARENT zamiast rzeczywistych wartości. Ogólnie nie polecałbym używania rozmiarów absolutnych, ponieważ może wyglądać zupełnie inaczej na wszystkich ekranach. Wolałbym używać odważników.
Daniel Bo

12
Szczerze mówiąc, powinien to być komentarz
Neon Warge

259
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

12
W momencie, gdy naciskam Alt + Enter w LayoutParams, widzę tak wiele klas. Czy możesz mi powiedzieć, którego użyć?
Uday

jaki jest pogląd rodziców?
C. Leung,

4
Powinieneś użyć klasy widoku, którą chcesz ustawić LayoutParams, czyli użyć LinearLayout.LayoutParams, aby ustawić wózki na Twój LL :)
Andrew

Co zrobić, jeśli chcesz, aby wysokość była dynamiczna na podstawie wymiarów oryginalnego obrazu, ale szerokość miała być MATCH_PARENT?
Taylor

import android.view.ViewGroup
Alan Nelson

57
imageView.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;

7
Jeśli ustawiasz parametry po raz pierwszy, ponieważ widok obrazu wykonałeś programowo, spowoduje to zerowy błąd wskaźnika (lub wystąpi z widokiem tekstu) i powinien być wszędzie indziej.
Tatarize

15
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.


1
co to jest „szerokość”?
FlorianB

9

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.LayoutParamsponieważ mój ImageViewrodzic widoki ( ) jestFrameLayout


4

Miałem ten sam problem. Rozwiązane przez najpierw ustawienie:

imageView.setMinHeight(0);
imageView.setMinimumHeight(0);

I wtedy :

imageView.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;

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.


3

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));

1

Możesz użyć stałej MATCH_PARENT lub jej wartości numerycznej -1.


1
MATCH_PARENT nie jest zdefiniowany w kontekście. Musisz powiedzieć „LayoutParams.MATCH_PARENT”
Akshat Agarwal
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.