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"
这个对我有用。
它与图像宽高比有关。 默认情况下,系统保持图像源的原始高宽比。 在大多数情况下,它与布局中指定的布局或尺寸不完全匹配。 因此,
- 要么改变图像的大小,以适应指定的布局,或
- 使用
android:scaleType
来适应图像。 例如,你可以指定android:scaleType="fitXY"
也许你可以给specific height to imageView say 50dp or 40dp
并adjust 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" />