Ich möchte das LayoutParams
für ein einstellen, ImageView
aber ich kann nicht herausfinden, wie es richtig ist.
Ich kann nur Dokumentation in der API für die verschiedenen finden ViewGroups
, aber keine ImageView
. Dennoch ImageView
scheint das diese Funktionalität zu haben.
Dieser Code funktioniert nicht ...
myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));
Wie mache ich es?
TypedValue.applyDimension(TypedValue.ComplexUnit_DP, 30, getResources().getDisplayMetrics())
Alter Thread, aber ich hatte jetzt das gleiche Problem. Wenn jemand darauf stößt, wird er wahrscheinlich diese Antwort finden:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30); yourImageView.setLayoutParams(layoutParams);
Dies funktioniert nur, wenn Sie die ImageView als Unteransicht zu einem LinearLayout hinzufügen. Wenn Sie es einem RelativeLayout hinzufügen, müssen Sie Folgendes aufrufen:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30); yourImageView.setLayoutParams(layoutParams);
quelle
Wenn Sie das Layout einer vorhandenen ImageView ändern, sollten Sie in der Lage sein, einfach die aktuellen LayoutParams abzurufen, die Breite / Höhe zu ändern und sie zurückzusetzen:
android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams(); layoutParams.width = 30; layoutParams.height = 30; myImageView.setLayoutParams(layoutParams);
Ich weiß nicht, ob das Ihr Ziel ist, aber wenn ja, ist dies wahrscheinlich die einfachste Lösung.
quelle
myImageView.setLayoutParams(layoutParams);
? Da Sie den Verweis auf die LayoutParams ändern, sollte dies nicht der Fall sein.Eine ImageView erhält setLayoutParams von View, das ViewGroup.LayoutParams verwendet. Wenn Sie das verwenden, stürzt es in den meisten Fällen ab, daher sollten Sie getLayoutParams () verwenden, das sich in View.class befindet. Dies erbt die übergeordnete Ansicht der ImageView und funktioniert immer. Sie können dies hier bestätigen: ImageView erweitert die Ansicht
Angenommen, Sie haben eine ImageView als ' image_view ' und die Breite / Höhe int als 'thumb_size' definiert.
Der beste Weg, dies zu tun :
ViewGroup.LayoutParams iv_params_b = image_view.getLayoutParams(); iv_params_b.height = thumb_size; iv_params_b.width = thumb_size; image_view.setLayoutParams(iv_params_b);
quelle