ImageView周围不需要的填充

我需要在所有活动/视图中包含一个标题graphics。 头文件被称为header.xml:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#0000FF" android:padding="0dip"> <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="0dip" android:layout_marginTop="0dip" android:layout_marginBottom="0dip" android:padding="0dip" android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_gravity="fill" android:background="#00FF00" /> </FrameLayout> 

注意android:background="#00FF00" (绿色),这只是可视化的目的。

我把它们包括进我的看法是这样的:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" style="@style/white_background"> <include layout="@layout/header" /> (...) 

所以,当我真的尝试了,结果看起来像左图像,而不是它应该看起来像(右):

注意绿色边框

(1)这个 – 橙色的部分是图像/ ImageView的问题
(2)不受欢迎的绿色边框。 注意:通常情况下,绿色区域将是透明的 – 只有绿色,因为我设置了background

注意顶部图像周围的绿色边框; 它是ImageView的一部分,我只是不知道为什么它在那里,或者我可以摆脱它。 它将所有填充和边距设置为0(但是,当我省略它们时,结果是相同的)。 该图像是一个480x64px的JPEG *,我把它放在res / drawable中(不是在drawable-Xdpi中的一个)。

(* jpeg,因为它似乎我偶然发现了老的PNG伽玛问题 – 起初我通过使绿色的边框与图片一样的橙色来解决问题,而且颜色不匹配。)

我尝试了我的htc desire / 2.2 / Build 2.33.163.1和模拟器。 我也在#android-dev中描述了这个问题; 她可以重现问题,但也没有解释。 build立目标是1.6。

更新@tehgoose:这段代码产生完全相同的top + bottom填充结果。

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" style="@style/white_background"> <!-- <include layout="@layout/header" /> --> <ImageView android:src="@drawable/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#00FF00" android:layout_weight="0" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="8dip" android:layout_weight="1"> (... rest of the elements) </LinearLayout> </LinearLayout> 

最后!

 <ImageView (...) android:adjustViewBounds="true" /> 

adjustViewbounds属性做了窍门:

如果您希望ImageView调整其边界以保持其可绘制的高宽比,请将其设置为true。

我在这里偶然发现 谢谢你的帮助!

 android:scaleType="fitXY" 

这个对我有用。

它与图像宽高比有关。 默认情况下,系统保持图像源的原始高宽比。 在大多数情况下,它与布局中指定的布局或尺寸不完全匹配。 因此,

  1. 要么改变图像的大小,以适应指定的布局,或
  2. 使用android:scaleType来适应图像。 例如,你可以指定android:scaleType="fitXY"

也许你可以给specific height to imageView say 50dp or 40dpadjust image to make green border消失。

例如: android:layout_height="40dp"

 android:layout_height="wrap_content" 

您需要将其更改为“fill_parent”

您还可能需要缩放图像,以便填充其所在的图层布局的比例。

我不明白你为什么需要框架布局。 没有它,反正你的图片会填满屏幕。

编辑:是的,对不起,xml是imageview的高度。

你需要围绕imageview提供一个更好的外观。

这里我用了什么:

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--<gradient android:startColor="#FFFFFF" android:endColor="#969696" android:angle="270"> --> <gradient android:startColor="#FFFFFF" android:endColor="#FFFFFF" android:angle="270"> </gradient> <stroke android:width="2dp" android:color="@color/graycolor" /> <corners android:radius="2dp" /> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" />