いくつかのテキストフィールドを含むレイアウトと、アクティビティの上部に表示される背景画像があります。背景画像を拡大縮小してコンテンツをラップしたいと思います(縦横比は気にしません)。ただし、画像はコンテンツよりも大きいため、代わりにレイアウトが背景画像をラップします。ここに私の元のコードがあります:
<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>
他のいくつかの質問を検索した結果、次の2つが見つかりました。
これに基づいて、背景を表示する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>
レイアウトのコンテンツのサイズに合わせて画像を拡大する最適な方法についての提案はありますか?画像の縦横比は関係ないので、背景を埋めたいだけです。
ありがとう!
私は同じ問題を抱えていました(私は思う)、そして私が見つけることができた唯一の解決策はこれでした:
<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>
このトリックを試すことができますが、
RealtiveLayoutの操作(必須ではありませんが、FrameLayoutの代わりにAndroid:scaleType = "fitXY"を使用します。textViewsAndroid:id = "@ + id/HeaderList"を含むRealViewLayoutにimageViewを移動し、背景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>
多かれ少なかれ動作するはずです!
描画可能な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で背景画像を動的に設定した場合、動作する可能性があります。レイアウトのサイズはすでに設定されているはずです。