it-swarm.com.de

ImageView Breite und Höhe programmgesteuert einstellen?

Wie kann ich die Breite und Höhe eines ImageView programmgesteuert einstellen?

571
praveenb

Es kann zu spät sein, aber für andere, die das gleiche Problem haben, die Höhe der ImageView einzustellen:

image_view.getLayoutParams().height = 20;

Hoffe das hilft.

Wichtig. Wenn Sie die Höhe einstellen, nachdem das Layout bereits angelegt wurde, rufen Sie auch Folgendes auf:

image_view.requestLayout()
978
Hakem Zaied

Wenn Ihre Bildansicht dynamisch ist, schlägt die Antwort mit getLayout mit einer Null-Ausnahme fehl.

In diesem Fall ist der richtige Weg:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
211
InvulgoSoft

Diese einfache Möglichkeit, Ihre Aufgabe zu erledigen:

setContentView(R.id.main);    
ImageView iv = (ImageView) findViewById(R.id.left);
int width = 60;
int height = 60;
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);

wenn Sie die Bildschirmgröße in Höhe und Breite angeben möchten, verwenden Sie den folgenden Code:

setContentView(R.id.main);    
Display display = getWindowManager().getDefaultDisplay();
ImageView iv = (LinearLayout) findViewById(R.id.left);
int width = display.getWidth(); // ((display.getWidth()*20)/100)
int height = display.getHeight();// ((display.getHeight()*30)/100)
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);

hoffe voll zu dir.

44
duggu

Ich habe dieses mit pixel und dp gespielt.

private int dimensionInPixel = 200;

Wie wird von Pixel eingestellt:

view.getLayoutParams().height = dimensionInPixel;
view.getLayoutParams().width = dimensionInPixel;
view.requestLayout();

So stellen Sie ein durch dp :

int dimensionInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dimensionInPixel, getResources().getDisplayMetrics());
view.getLayoutParams().height = dimensionInDp;
view.getLayoutParams().width = dimensionInDp;
view.requestLayout();

Hoffe das würde dir helfen.

29
Hiren Patel

Wenn Sie Ihre Breite oder Höhe auf match_parent (so groß wie das übergeordnete Element) oder wrap_content (groß genug, um in den eigenen internen Inhalt zu passen) festlegen müssen, hat ViewGroup.LayoutParams zwei Konstanten

imageView.setLayoutParams(
    new ViewGroup.LayoutParams(
        // or ViewGroup.LayoutParams.WRAP_CONTENT
        ViewGroup.LayoutParams.MATCH_PARENT,      
        // or ViewGroup.LayoutParams.WRAP_CONTENT,     
        ViewGroup.LayoutParams.MATCH_PARENT ) );

Oder Sie können sie wie in Hakem Zaieds answer einstellen:

imageView.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
//...
11
Omar

Sie können den Wert für alle Fälle einstellen.

demoImage.getLayoutParams().height = 150;

demoImage.getLayoutParams().width = 150;

demoImage.setScaleType(ImageView.ScaleType.FIT_XY);
9
tienanhcntt2

Der beste und einfachste Weg, eine Schaltfläche dynamisch zu setzen, ist 

 Button index=new Button(this);
 int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());             
 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());

Die obige Höhe und Breite sind in Pixel px . 45 ist die Höhe in dp und 42 ist die Breite in dp .

 index.setLayoutParams(new <Parent>.LayoutParams(width, height));

Wenn Sie beispielsweise eine Schaltfläche innerhalb einer TableRow innerhalb eines TableLayout platziert haben, sollten Sie sie als TableRow.LayoutParams haben

 index.setLayoutParams(new TableRow.LayoutParams(width, height));
8
Ali Kahoot

Erstellen Sie einfach ein LayoutParams-Objekt und ordnen Sie es Ihrer imageView zu

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
7
Zubair Akber
image_view.getLayoutParams().height 

gibt den Höhenwert in Pixel zurück. Sie müssen zuerst die Bildschirmabmessungen abrufen, um die Werte richtig festzulegen.

 Display display = context.getWindowManager().getDefaultDisplay();
 DisplayMetrics outMetrics = new DisplayMetrics();
 display.getMetrics(outMetrics);
 int screen_height = outMetrics.heightPixels;
 int screen_width = outMetrics.widthPixels;

Nachdem Sie die Bildschirmabmessungen erhalten haben, können Sie die Breite und Höhe der Bildansicht mit den richtigen Rändern einstellen.

 view.getLayoutParams().height = screen_height - 140;
 view.getLayoutParams().width = screen_width - 130 ;
4
Vikas

Um ImageView und Höhe programmgesteuert festzulegen, können Sie Folgendes tun

            //Makesure you calculate the density pixel and multiply it with the size of width/height
            float dpCalculation = getResources().getDisplayMetrics().density;
            your_imageview.getLayoutParams().width = (int) (150 * dpCalculation);

            //Set ScaleType according to your choice...
            your_imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
1
BharathRao

Stellen Sie in dem Szenario, in dem die Widgetgröße programmgesteuert festgelegt werden muss, die folgenden Regeln ein.

  1. Stellen Sie LayoutParam für das Layout ein, in dem Sie diese Ansicht hinzufügen . In meinem Fall füge ich TableRow hinzu, also musste ich TableRow.LayoutParams
  2. Folgen Sie diesem Code

final float scale = getResources().getDisplayMetrics().density; int dpWidthInPx = (int) (17 * scale); int dpHeightInPx = (int) (17 * scale);

TableRow.LayoutParams deletelayoutParams = new TableRow.LayoutParams(dpWidthInPx, dpHeightInPx); button.setLayoutParams(deletelayoutParams); tableRow.addView(button, 1);

0
Rohit Mandiwal

Wenn Sie das Bild nur in die Bildansicht einpassen möchten, können Sie "Inhalt umbrechen" in der Eigenschaft height und width mit dem Skalentyp verwenden. Wenn Sie dies jedoch manuell festlegen möchten, müssen Sie LayoutParams verwenden.

Mit Layoutparams können Sie die Höhe und Breite des Layouts effizient programmgesteuert einstellen.

0
raj kavadia