占用Android模拟器整个屏幕的320dp宽图像

时间:2011-07-14 04:44:07

标签: android android-layout android-emulator android-widget imageview

我有一个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。那么为什么横幅占据了整个宽度呢?

2 个答案:

答案 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