缩放背景图像来包装布局的内容
我有一个布局,其中包含一些文本字段,并有一个背景图像显示在我的活动的顶部。 我想要背景图像缩放以包装内容(不关心纵横比)。 然而,图像比内容大,所以布局代替了背景图像。 这是我的原始代码:
<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>
在search其他一些问题之后,我发现了这两个问题:
如何包装内容视图而不是后台可绘制?
缩放可绘制的或背景图像?
基于此,我创build了一个带有ImageView的FrameLayout来显示背景。 不幸的是,我仍然无法工作。 我想要的背景图像的高度收缩/展开文本视图的大小,但与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>
有没有人有任何build议如何最好地使图像缩放到一些布局的内容的大小? 我并不关心图像的宽高比,因为它没关系,我只是想填充背景。
谢谢!
我有同样的问题(我认为),我能find的唯一解决scheme是:
<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>
你可以试试这个技巧,
- FrameLayout(wrapcontent,wrapcontent)
-
- ImageView(匹配父,匹配父)//它的背景
-
- LinearLayout(wrapcontent,wrapcontent)
-
-
- 你所有的内容都进入这个线性布局或任何你想要的任何其他types
-
使用RealtiveLayout(不是必须的,而是FrameLayout,并使用android:scaleType =“fitXY”。将imageView移动到包含文本android:id =“@ + id / HeaderList”的RealtiveLayout,并取消背景android:background =“@绘制/标题“在这个级别。
<?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>
或多或less它应该工作!
创build一个可绘制的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"
我觉得我过去做过类似的事情,试着在图像视图中使用重力设置,我认为其中一个应该做你以后的事情。
我还没有尝试过,但如果您在onCreate上dynamic地设置背景图像,可能工作。 布局的大小应该已经设置好了。
你可以使用这个:
<ImageView ... android:scaleType="fitXY" >
希望它有帮助)))
试试这个代码…..
<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>