Reputation: 23
so I got this xml code:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight="1">
<ImageView
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="1"
android:background="@drawable/profilbildfrau"
android:id="@+id/bild0"
>
</ImageView>
<ImageView
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="1"
android:background="@drawable/profilbildfrau"
android:id="@+id/bild1">
</ImageView>
<ImageView
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_weight="1"
android:background="@drawable/profilbildfrau"
android:id="@+id/bild2">
</ImageView>
</LinearLayout> (...)
And this is my JavaCode:
ImageView beispiel;
ImageView[] profilbilder = new ImageView[21];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hauptmenue);
beispiel = (ImageView)findViewById(R.id.bild0);
int weite = beispiel.getWidth();
profilbilder[0] = (ImageView)findViewById(R.id.bild0);
profilbilder[1] = (ImageView)findViewById(R.id.bild1);
profilbilder[2] = (ImageView)findViewById(R.id.bild2);
profilbilder[3] = (ImageView)findViewById(R.id.bild3);
profilbilder[4] = (ImageView)findViewById(R.id.bild4);
profilbilder[5] = (ImageView)findViewById(R.id.bild5);
profilbilder[6] = (ImageView)findViewById(R.id.bild6);
profilbilder[7] = (ImageView)findViewById(R.id.bild7);
profilbilder[8] = (ImageView)findViewById(R.id.bild8);
profilbilder[9] = (ImageView)findViewById(R.id.bild9);
profilbilder[10] = (ImageView)findViewById(R.id.bild10);
profilbilder[11] = (ImageView)findViewById(R.id.bild11);
profilbilder[12] = (ImageView)findViewById(R.id.bild12);
profilbilder[13] = (ImageView)findViewById(R.id.bild13);
profilbilder[14] = (ImageView)findViewById(R.id.bild14);
profilbilder[15] = (ImageView)findViewById(R.id.bild15);
profilbilder[16] = (ImageView)findViewById(R.id.bild16);
profilbilder[17] = (ImageView)findViewById(R.id.bild17);
profilbilder[18] = (ImageView)findViewById(R.id.bild18);
profilbilder[19] = (ImageView)findViewById(R.id.bild19);
profilbilder[20] = (ImageView)findViewById(R.id.bild20);
for(int i = 0; i < 20; i++){
profilbilder[i].setMaxHeight(weite);
//ImageView bild = profilbilder[i];
//bild.getLayoutParams().height = weite;
profilbilder[i].setMinimumHeight(weite);
profilbilder[i].requestLayout();
}
}
My goal is to get the width of one of the pictures after it has its correct width fitting the screen and then set the height of each picture to the width of the picture. Tried some code, this one is my recent one, but the height won't match the width. What am I missing here?
Thank you in advance, Julian
Upvotes: 0
Views: 266
Reputation: 2512
In onCreate
the view is not sized yet and normally the width will return 0. Add OnGlobalLayoutListener
to the view and get the height and width of the ImageView
inside onGlobalLayout
. Then you can set a new LayoutParams
to every ImageView
:
beispiel.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
beispiel.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
beispiel.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
int width = beispiel.getWidth();
for(int i = 0; i <= 20; i++){
// make the height and width of each ImageView equal to width of beispiel
profilbilder[i].setLayoutParams(new LinearLayout.LayoutParams(width, width));
}
}
});
Upvotes: 1