Square ImageView位于屏幕中央

时间:2015-10-08 23:51:44

标签: java android

我想将ImageView放在屏幕中央,并将ImageView的宽度和高度设置为屏幕宽度。

我尝试了这个,但ImageView的宽度不等于屏幕的宽度,而ImageView位于左上角:

        DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
        float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int)dpWidth, (int)dpWidth);
        imageView.setLayoutParams(layoutParams);

在xml中,ImageView位于屏幕的中央:

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/imageView"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

1 个答案:

答案 0 :(得分:1)

在Java代码中,setLayoutParams覆盖了您在xml中定义的布局规则(以layout_开头的参数)。 您需要添加规则以保持图像居中。 另外,LayoutParams将采用“像素”中的整数而不是“dp”。

所以试试这个 -

DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels;

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int)dpWidth, (int)dpWidth);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
imageView.setLayoutParams(layoutParams);

此外,您可能希望使用scaleType让图像填充空间。 请在此处查看可用的scaleType。 http://developer.android.com/reference/android/widget/ImageView.ScaleType.html