2013-05-28 11 views
10

Próbuję programowo ustawić minimalną wysokość obrazu, ale do tej pory nie miałem szczęścia. Moje kodu jest poniżejAndroid: Ustaw programowo minimalną wysokość widoku

int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 160, getResources().getDisplayMetrics()); 
    int minHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); 

    LayoutParams params = new LayoutParams(width,LayoutParams.MATCH_PARENT); 

    SmartImageView siv = new SmartImageView(getActivity()); 
    siv.setMinimumHeight(minHeight); 
    siv.setLayoutParams(sivParams); 
    siv.setAdjustViewBounds(true); 
    siv.setScaleType(ScaleType.FIT_XY); 
    siv.setImageUrl(url); 
    ll.addView(siv); 

Próbowałem też umieścić metodę setMinimumWidth po metody setLayoutParams ale to nie działało albo. Proszę o pomoc

Dzięki

+1

Czy params i sivParams taki sam (jest to błąd pisania lub 2 różne zmienne)? Ponadto używasz poprawnego typu LayoutParams? Jeśli nadrzędny widok dla siv jest RelativeLayout, musisz użyć RelativeLayout.LayoutParams, jeśli jest to LinearLayout - LinearLayout.LayoutParams i tak dalej .. – npace

+0

Przepraszam, że był błąd typu, a także używałem tego samego, tj. LinearLayout.LayoutParams –

+0

Uwaga dla przyszłych czytelników, takich jak ja: Jeśli masz ustawiony minHeight w XML, wydaje się, że próba zmiany go w kodzie nie działa (testowanie Android 4.x). Jeśli usuniesz go z pliku XML, możesz ustawić go w kodzie, a nawet go zmienić (ustawić wiele razy na różne wartości). – eselk

Odpowiedz

14

spróbuj tego --->

siv.getLayoutParams().height = minHeight; 

lub u można także spróbować --->

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width , minHeight); 
siv.setLayoutParams(layoutParams); 
+0

Właściwie, mam tekst obok obrazu, a wysokość obrazu jest dynamicznie zmieniana w zależności od ilości tekstu. Ale jeśli nie ma tekstu, chcę ustawić minimalną wysokość dla widoku obrazu, ponieważ jeśli nie ma tekstu, to obraz będzie miał 0 wysokości –

+3

to ustawia wysokość lub szerokość, a nie minimalną szerokość lub wysokość. –

-1
SmartImageView siv = new SmartImageView(getActivity()); 
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, minHeight); 
siv.setLayoutParams(params); 
+0

Dzięki, ale mój Wysokość widoku obrazu dynamicznie się zmienia i chcę mieć minimalną wysokość (np. gdy wysokość widoku obrazu wynosi 0). Już go wypróbowałem, ale wysokość obrazu zostanie ustalona –

+0

Samo podanie zmiennej o nazwie minHeight nie oznacza, że ​​ustawia ona minimalną wysokość widoku. – thedarkpassenger

Powiązane problemy