所以我得到了这个xml代码:
<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> (...)
这是我的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();
}
}
我的目标是在其中一个图片的宽度适合屏幕后获得其宽度,然后将每个图片的高度设置为图片的宽度。尝试了一些代码,这个是我最近的一个,但高度与宽度不匹配。我在这里缺少什么?
提前谢谢你, 儒略
答案 0 :(得分:1)
在onCreate
中,视图的大小尚未确定,通常宽度将返回0.将OnGlobalLayoutListener
添加到视图中,并获取ImageView
内onGlobalLayout
的高度和宽度}。然后,您可以为每个LayoutParams
设置新的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));
}
}
});