在 ImageView 周围添加不需要的填充

我需要在我所有的活动/视图中包含一个头文件,包含头文件的文件名为 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" />
(...)

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

note the green border

(1)这个橙色部分是图像/ImageView
(2)不被喜爱的绿色边界。注意: 正常情况下,绿色区域是透明的-它只是绿色,因为我设置了 background

注意顶部图片周围的绿色边框; 它是 ImageView 的一部分,我不知道为什么它会在那里,也不知道如何去掉它。它将所有的填充和边距设置为0(但是省略它们的结果是一样的)。图像是一个480x64px 的 jpeg * ,我把它放在 res/draable 中(尽管没有放在 drawable-Xdpi中)。

(* jpeg,因为看起来我偶然发现了古老的 png 伽马问题——起初我通过将绿色边框设置为与图片相同的橙色,并且颜色不匹配来解决这个问题。)

我在我的 htc 设计/2.2/Build 2.33.163.1和模拟器上尝试了它。此外,我在 # android-dev 中向某人描述了这个问题; 她可以重现这个问题,但也没有解释。建造目标是1.6。

Update@tehose: 此代码生成完全相同的顶部 + 底部填充结果。

<?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>
80447 次浏览
android:layout_height="wrap_content"

您需要将其更改为“ fill _ father”

您还可能需要缩放您的图像,以便它将是正确的比例,以填充它所在的帧布局。

我不明白你为什么需要那里的框架布局。没有它,你的图像无论如何都会填满整个屏幕。

编辑: 是的,抱歉,xml 是图像视图的高度。

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

例句: android:layout_height="40dp"

你需要提供的形状周围的图像视图给一个更好的外观。

下面是我使用的:

<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" />

终于!

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

调整视图界限属性取得了成功:

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

我绊倒了 在这里。谢谢你的帮助!

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

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

对我有用。

在 image view xml 中使用这个 android: scaleType = “ fitXY”

这些额外的填充是自动生成的,因为机器人会尝试获得原始的长宽比。请在下面尝试

   android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:layout_height="wrap_content"