Stellen Sie die Höhe der Bildansicht programmgesteuert als Matchparent ein

83

Ich muss die Höhe einer Bildansicht programmgesteuert als Matchparent einstellen. Wenn es sich um eine feste Höhe handelt, weiß ich, wie man sie einstellt.

aber wie kann ich es als matchparent einstellen?

BEARBEITEN:

Tatsächlich ist die Höhe des übergeordneten Layouts dynamisch. Daher muss die Höhe der Bildansicht als Höhe des übergeordneten Layouts festgelegt werden.

Andro-Mädchen
quelle
2
Ich habe alle in den Antworten genannten Methoden ausprobiert. Aber es wird nicht die Höhe als Match-Elternteil festgelegt :(
Andro-Girl
1
Sie sollten Ihre akzeptierte Antwort überprüfen
CularBytes

Antworten:

-19

LayoutParams initiieren.

Weisen Sie die Breite und Höhe des übergeordneten Elements zu und übergeben Sie sie an die setLayoutParams-Methode der Bildansicht

Lucky Luke
quelle
3
Sie sollten niemals die tatsächlichen Dimensionen der Eltern überschreiten. Verwenden Sie immer MATCH_PARENT anstelle der tatsächlichen Werte. Im Allgemeinen würde ich die Verwendung absoluter Größen nicht empfehlen, da diese auf allen Bildschirmen möglicherweise völlig anders aussehen. Ich würde es vorziehen, Gewichte zu verwenden.
Daniel Bo
12
Um ehrlich zu sein, sollte dies ein Kommentar sein
Neon Warge
255
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
C. Leung
quelle
12
In dem Moment, in dem ich Alt + Enter in LayoutParams drücke, sehe ich so viele Klassen. Können Sie mir bitte sagen, welches ich verwenden soll?
Uday
Was ist die übergeordnete Ansicht?
C. Leung
4
Sie sollten eine Ansichtsklasse verwenden, für die Sie LayoutParams festlegen möchten, dh LinearLayout.LayoutParams verwenden, um Kinderwagen auf Ihr LL festzulegen :)
Andrew
Was ist, wenn die Höhe basierend auf den Abmessungen des Originalbilds dynamisch sein soll, die Breite jedoch MATCH_PARENT sein soll?
Taylor
android.view.ViewGroup importieren
Alan Nelson
57
imageView.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
Luke Allison
quelle
7
Wenn Sie die Parameter zum ersten Mal festlegen, weil Sie die Bildansicht programmgesteuert erstellt haben, wird der Zeigerfehler (oder bei der Textansicht) auf Null gesetzt und sollte überall anders auftreten.
Tatarize
15
imageView.setLayoutParams
    (new ViewGroup.MarginLayoutParams
        (width, ViewGroup.LayoutParams.MATCH_PARENT));

Die Art der Layoutparameter hängt von der übergeordneten Ansichtsgruppe ab. Wenn Sie die falsche eingeben, führt dies zu einer Ausnahme.

xandy
quelle
1
Was ist "Breite"?
FlorianB
9

Für Kotlin-Benutzer

val params = mImageView?.layoutParams as FrameLayout.LayoutParams
params.width = FrameLayout.LayoutParams.MATCH_PARENT
params.height = FrameLayout.LayoutParams.MATCH_PARENT
mImageView?.layoutParams = params

Hier habe ich verwendet, FrameLayout.LayoutParamsda meine Ansichten ( ImageView) Eltern sindFrameLayout

Muhamed Riyas M.
quelle
4

Ich hatte das gleiche Problem. Gelöst durch erste Einstellung:

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

Und dann :

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

setMinHeight wird von ImageView definiert, während setMinimumHeight von View definiert wird. Gemäß den Dokumenten wird der größere der beiden Werte verwendet, daher müssen beide festgelegt werden.

Andrea De Simone
quelle
3

Sie können diesen Fall ausprobieren, falls Sie mit dem Elternteil übereinstimmen möchten. Die Maßanordnung ist Breite und Höhe in der Reihenfolge

web = new WebView(this);
        web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

quelle
1

Sie können die Konstante MATCH_PARENT oder ihren numerischen Wert -1 verwenden.


quelle
1
MATCH_PARENT ist im Kontext nicht definiert. Sie müssen 'LayoutParams.MATCH_PARENT'
Akshat Agarwal