我有一个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
。那么为什么横幅占据了整个宽度呢?
答案 0 :(得分:1)
dip
表示与密度无关的像素。您的480x800仿真器很可能是HDPI(高密度或每英寸高点数),这意味着320dp将转换为320 * 1.5实际像素(480)。只有在MDPI(中等密度)屏幕上,比例因子为1,才能实际获得320像素。
您可以像这样获取当前屏幕的比例因子:
float scale = getResuorces().getDisplayMetrics().density;
如果你真的希望它是320 像素宽,无论屏幕密度如何(根本不推荐),你可以指定:
android:layout_width="320px"
答案 1 :(得分:0)
dip不是物理像素,而是取决于显示密度的组合数字。更多信息:
http://developer.android.com/guide/practices/screens_support.html