Как получить полупрозрачное изображение поверх другого изображения для хранения текста в android (предоставлен снимок экрана)

У меня есть изображение, использующее представление изображения, в нижней части изображения мне нужно полупрозрачное представление (черного цвета), в котором будет отображаться текст. Что-то вроде этого

введите описание изображения здесь

У меня есть текст поверх изображения, но теперь я застрял на том, чтобы получить вид на черном фоне. Я пытался

 <TextView 
 android:background="@color/lightGrey"
 android:text="Swiss Chalet - Play for a chance to win free app!"/>

однако это дает только серый фон для текста. Кто-нибудь знает, как я могу этого добиться?


person Akshat Agarwal    schedule 22.10.2013    source источник
comment
Вы можете использовать Frame Layout. Он идеально подходит для такого рода работ.   -  person newBie    schedule 23.10.2013


Ответы (5)


Попробуйте что-нибудь подобное на своем фоне

android:background="#80000000"

Дополнительную информацию о настройке прозрачности можно найти здесь

person Manishika    schedule 22.10.2013
comment
Думаю, вы неправильно поняли мой вопрос, я обновил вопрос. Также посмотрите комментарий под ответом Эндрю - person Akshat Agarwal; 22.10.2013

В вашем xml используйте

android:alpha=".4"

Это установит альфа-значение представления. Альфа - это прозрачность. Вы можете настроить увеличение или уменьшение прозрачности.


Не зная, как вы реализовали свой макет, это снимок в темноте, но он может быть полезным.

<TextView
    android:id="@+id/your_id_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="Your text"
    android:background:"@color/your_color"/>
person Andrew Schuster    schedule 22.10.2013
comment
Извините, возможно, я не совсем точно объяснил свою проблему, я обновил вопрос. android: background = @ color / lightGrey, который я сделал, был только в текстовом представлении, которое показывалось поверх изображения, он дает мне фон, но только в тексте, я хочу, чтобы фон начинался чуть выше текста и проходил все путь до конца изображения - person Akshat Agarwal; 22.10.2013
comment
Можно ли опубликовать весь xml для этого конкретного представления? Есть несколько способов сделать это, и я обязательно дам вам наиболее подходящий. - person Andrew Schuster; 22.10.2013

В файле colors.xml (или там, где вы определяете цвет «lightGrey») вы можете указать альфа-канал, добавив две цифры перед шестнадцатеричным кодом цвета (в формате AARRGGBB).

Так, например, если ваш светло-серый цвет # 555555, укажите его как

<color name="lightGrey">#CC55555</color>

вместо этого цвет будет прозрачным на 20% и непрозрачным на 80%. 00 представляет полную непрозрачность (0% прозрачности), а FF соответствует 100% прозрачности (невидимой). Надеюсь это поможет!

person physphil    schedule 22.10.2013

Вы могли бы сделать это так,

<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <FrameLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:alpha="0.4"
       android:background="@android:color/black"/>

   <TextView 
    android:background="@color/lightGrey"
    android:text="Swiss Chalet - Play for a chance to win free app!"/>
</FrameLayout>
person Sivakumar S    schedule 22.10.2013

Попробуй это:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/icmsLrnArtListItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:layout_margin="3dp"
    android:padding="5dp" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp" >

        <ImageView
            android:id="@+id/icmsImageThumb"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:src="@drawable/ic_launcher"
            android:scaleType="fitXY" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:background="@android:color/darker_gray"
            android:textColor="@android:color/black"
            android:text="Image Top text"
            android:gravity="center"
            android:textStyle="bold" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@android:color/darker_gray"
            android:ellipsize="end"
            android:maxLines="2"
            android:text="Image Bottom text"
            android:textColor="@android:color/black"
            android:shadowColor="#FFFFFF"
            android:gravity="center"
            android:shadowDx="2"
            android:textStyle="bold"
            android:shadowDy="2"
            android:shadowRadius="2" />
    </FrameLayout>

</LinearLayout>
person Haresh Chhelana    schedule 23.10.2013
comment
не будет ли framelayout заставлять текстовые панели накладываться друг на друга? - person Akshat Agarwal; 23.10.2013