我想将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" />
答案 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