320dp宽图像占据Android emulator的整个屏幕
我有一个横幅,它的宽度是320dp宽图像占据Android emulator的整个屏幕,android,android-layout,android-emulator,android-widget,imageview,Android,Android Layout,Android Emulator,Android Widget,Imageview,我有一个横幅,它的宽度是320dp,但它占据了480x800android仿真器的整个宽度 下面是横幅的XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/add_banner" android:layout_width="320dip" android:lay
320dp
,但它占据了480x800
android仿真器的整个宽度
下面是横幅的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/add_banner"
android:layout_width="320dip"
android:layout_height="50dip"
>
<ImageView android:id="@+id/add_image"
android:layout_width="320dip"
android:layout_height="50dip"
android:src="@drawable/your_ad_here"
/>
<Button android:id="@+id/btn_addclose"
android:layout_width="25dip"
android:layout_height="25dip"
android:gravity="center"
android:layout_alignTop="@id/add_image"
android:layout_alignRight="@id/add_image"
android:text="x"
/>
</RelativeLayout>
我已将其作为以下内容包含在我的main.xml文件中:
<include android:id="@+id/add_banner"
layout="@layout/tlp_add_banner"
android:layout_width="320dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"/>
为了确保我的模拟器是
480x800
,我甚至在运行时记录了这些指标。它是480x800
。那么为什么横幅占据整个宽度呢?倾角不是物理像素,而是一个取决于显示密度的合成数字。更多信息请点击此处:dip
表示与密度无关的像素。您的480x800仿真器很可能是HDPI(高密度,或每英寸高点数),这意味着320dp将转换为320*1.5实际像素(即480)。只有在比例因子为1的MDPI(中等密度)屏幕上,才能获得320像素
您可以获得当前屏幕的比例因子,如下所示:
float scale = getResuorces().getDisplayMetrics().density;
如果您确实希望它的宽度为320像素,而不考虑屏幕密度(根本不建议这样做),您可以指定:
android:layout_width="320px"
我尝试提供备用资源,我在
可绘制hdpi
文件夹中放置了一个240dpi(高密度)320x50图像。Android并不关心实际图像中的DPI设置(这只是元数据,在很多情况下可能是错误的)。只需将一张480x75的图像放入可绘制的hdpi中(我只是将宽度和高度乘以1.5)。