我的布局包含一些文本字段,并且背景图片显示在我的活动顶部。我希望背景图像可以缩放以包装内容(不关心宽高比)。但是,图像大于内容,因此布局反而包裹背景图像。这是我的原始代码:
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/HeaderList"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:background="@drawable/header">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/NameText"
android:text="Jhn Doe"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="4dp"
android:paddingTop="4dp"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#FFFFFF"
android:layout_alignParentLeft="true"
android:id="@+id/HoursText"
android:text="170 hours"
android:textSize="23sp"
android:layout_below="@+id/NameText"
android:paddingLeft="4dp"
/>
</RelativeLayout>
在搜索了其他一些问题后,我发现了这两个问题:
How to wrap content views rather than background drawable?
Scale a Drawable or background image?
基于此,我创建了一个带有ImageView的FrameLayout,显示背景。不幸的是,我仍然无法让它工作。我想要背景图像的高度缩小/扩展w /文本视图的大小,但使用FrameLayout,ImageView适合它的父级的大小,我找不到一种方法使父级适合文本视图布局的大小。这是我更新的代码:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView android:src="@drawable/header"
android:layout_width="fill_parent"
android:scaleType="fitXY"
android:layout_height="fill_parent"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/HeaderList"
android:layout_gravity="top"
android:layout_height="wrap_content"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/NameText"
android:text="John Doe"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="4dp"
android:paddingTop="4dp"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#FFFFFF"
android:layout_alignParentLeft="true"
android:id="@+id/HoursText"
android:text="170 hours"
android:textSize="23sp"
android:layout_below="@+id/NameText"
android:paddingLeft="4dp"
/>
</RelativeLayout>
</FrameLayout>
是否有人建议如何最好地将图像缩放到某些布局内容的大小?我并不关心图像的宽高比,因为它无关紧要,我只是想让它填满背景。
谢谢!
答案 0 :(得分:64)
我遇到了同样的问题(我认为),我能找到的唯一解决方案是:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/some_image"
android:layout_alignTop="@+id/actual_content"
android:layout_alignBottom="@id/actual_content"
android:layout_alignLeft="@id/actual_content"
android:layout_alignRight="@id/actual_content"
/>
<LinearLayout
android:id="@id/actual_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
>
<!-- more stuff ... -->
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:3)
你可以尝试这个技巧,
答案 2 :(得分:2)
使用RealtiveLayout(没有强制性但不使用FrameLayout并使用android:scaleType =“fitXY”。将imageView移动到RealtiveLayout,其中包含textviews:id =“@ + id / HeaderList”并取消设置后台android:background =“@ drawable / header”在这个级别。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/principal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/header" >
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/HeaderList"
android:layout_gravity="top"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/backImg"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:background="@color/blancotransless"
android:src="@drawable/header"
android:scaleType="fitXY" >
</ImageView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/NameText"
android:text="John Doe"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingLeft="4dp"
android:paddingTop="4dp"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#FFFFFF"
android:layout_alignParentLeft="true"
android:id="@+id/HoursText"
android:text="170 hours"
android:textSize="23sp"
android:layout_below="@+id/NameText"
android:paddingLeft="4dp"
/>
</RelativeLayout>
</RelativeLayout>
或多或少它应该有效!
答案 3 :(得分:1)
创建一个可绘制的xml,比如mybackground.xml
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/header"
android:gravity="fill" />
然后在第一个代码段中的RelativeLayout中使用
android:background="@drawable/mybackground"
答案 4 :(得分:0)
我想我过去做过类似的事情,尝试在图片视图中使用重力设置,我认为其中一个应该做你想要做的事。
答案 5 :(得分:0)
我没有尝试过,但是如果你在可能有用的onCreate上动态设置背景图像。应该已经设置了布局的大小。
答案 6 :(得分:-1)
您可以使用:
<ImageView
...
android:scaleType="fitXY"
>
希望它有所帮助)))
答案 7 :(得分:-1)
试试这段代码......
<LinearLayout
android:layout_width="fill_parent"
android:id="@+id/HeaderList"
android:orientation="vertical"
android:layout_gravity="top"
android:layout_height="wrap_content"
android:background="@drawable/header">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/NameText"
android:text="Jhn Doe"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:paddingLeft="4dp"
android:paddingTop="4dp"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#FFFFFF"
android:id="@+id/HoursText"
android:text="170 hours"
android:textSize="23sp"
android:paddingLeft="4dp"
/>
</LinearLayout>