Wie kann ich die Breite und Höhe eines ImageView
programmgesteuert einstellen?
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()
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);
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.
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.
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;
//...
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);
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));
Erstellen Sie einfach ein LayoutParams-Objekt und ordnen Sie es Ihrer imageView zu
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(150, 150);
imageView.setLayoutParams(params);
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 ;
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);
Stellen Sie in dem Szenario, in dem die Widgetgröße programmgesteuert festgelegt werden muss, die folgenden Regeln ein.
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
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);
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.