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.