web-dev-qa-db-ja.com

AndroidのImageViewをオーバーレイ

だから私はウェブから来る画像のリストを持っています、私はそれらがどの色かわからないので、ImageViewの上にテキストを置きたいです。

私のアイデアは、ImageViewと、そのImageViewとその上のテキストの上に透明度のグラデーションが設定されたイメージオーバーレイを配置することです。私はこの行動を模倣したいと思います:

enter image description here

とにかくこれをXML経由で行う方法はありますか?

14
cesarferreira

あなたが書いたListAdaptergetView(...)で膨張するリスト項目のXMLを書くとき、あなたはきっとこれを行うことができます。

リストアイテムについては、次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

  <ImageView
    Android:layout_width="320dp"
    Android:layout_height="240dp"
    Android:background="#ACACAC"/>

  <RelativeLayout
    Android:layout_width="320dp"
    Android:layout_height="240dp"
    Android:background="@drawable/gradient">

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Here is your text"
        Android:textColor="#000000"
        Android:layout_alignParentBottom="true"/>

  </RelativeLayout>

</RelativeLayout>

次に、そのドローアブル/グラデーションを作成します。そのため、あなたは here から回答をリサイクルできます。

20
adityajones

adityajonesのおかげで、なんとかそこにたどり着くことができました:)これはmy正解ですが、私は彼を正しいものとしてマークします!

<?xml version="1.0" encoding="utf-8"?>
<ImageView
    Android:layout_width="fill_parent"
    Android:layout_height="200dp"
    Android:scaleType="centerCrop"
    Android:src="@drawable/image" />

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="200dp"
    Android:background="@drawable/gradient_image" >

    <TextView
        Android:id="@+id/text"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_alignParentLeft="true"
        Android:layout_margin="6dp"
        Android:layout_marginBottom="18dp"
        Android:shadowColor="#000"
        Android:shadowRadius="7.0"
        Android:text="This is some random text"
        Android:textColor="@color/white"
        Android:textSize="22sp" />
</RelativeLayout>
4
cesarferreira

FrameLayoutまたはRelativeLayoutを使用します。最初に追加する最初のビューは、背景のImageViewである必要があります。その後、明らかにいくつかのTextViewと他のImageView [またはボタン、ImageButtonなど]が必要になります。

合理的なレイアウトのようです:背景画像、そして各コーナーに1つの追加ビュー。

グラデーションの場合は、下部にグラデーションドローアブルを背景にして、別のレイアウト/ビューが必要になるでしょうが、TextViewの1つの背景をグラデーションとして設定することで問題を回避できるかもしれません。

2
Matt

グラデーションドローアブルファイルを使用したり、xmlに設定したりする必要はありません。この関連する質問で説明されているように、GradientDrawableクラスを使用して実用的にこれを行うことができます( プログラムでグラデーション )を設定し、ImageViewをカバーするレイアウトの背景として設定します。これにより、さまざまな色と方向を使用できます

0