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.


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


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

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;

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.


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


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.


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

1

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


1
MATCH_PARENT ist im Kontext nicht definiert. Sie müssen 'LayoutParams.MATCH_PARENT'
Akshat Agarwal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.