在我的项目中,自定义视图具有固定宽度。宽度在值>dimen中指定
<dimen name="layout_width">75dp</dimen>
问题是在某些分辨率为 1080 X 1920 的设备(例如:像素(中,此视图被裁剪。但是其他一些设备(例如:Pixel2(具有相同的分辨率一切正常。
尝试使用不同的维度文件,如这篇文章所示。这两个设备都从相同的dimen文件中挑选
法典
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="21dp"
android:gravity="center"
android:orientation="vertical">
<RelativeLayout
android:layout_width="55dp"
android:layout_height="55dp"
>
<ImageView
android:id="@+id/icon"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_centerInParent="true"
tools:background="@drawable/icon" />
</RelativeLayout>
<TextView
android:id="@+id/title"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_marginTop="20dp"
android:gravity="center"
/>
</LinearLayout>
在您的 imageView 中,尝试不同的 scaleType,看看是否有适合您的用例。
<ImageView
android:id="@+id/icon"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_centerInParent="true"
android:scaleType="fitCenter"
tools:background="@drawable/icon" />
其他可接受的scaleType
值是FIT_XY
、FIT_START
、FIT_CENTER
、FIT_END
、CENTER
、CENTER_CROP
这是由于设备的屏幕 dpi 不同而发生的。像普通的1080 * 1960设备v/s nexus 5x(具有更高的dpi和相同的分辨率(
另一个例子可以是三星Galaxy Edge S6(它具有更高的dpi,如577dpi,分辨率为xxxhdpi(。
最一致和可靠的解决方案是不使用静态高度宽度,而是使用wrap_content和match_parent属性以及相对布局以这种方式排列布局