Использование android:elevation заставляет TextView исчезнуть

У меня есть этот RelativeLayout только с двумя представлениями. Пожалуйста, смотрите ниже, что я пробовал:

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/image_view"
        android:layout_centerInParent="true"
        android:background="@drawable/border"
        android:elevation="4dp"/> //Below TextView disappear

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="-48dp"
        android:layout_below="@+id/image_view"/>
</RelativeLayout>

TextView установил отрицательное значение layout_marginTop, чтобы его можно было отображать поверх изображения. Все работает нормально, пока я не установил свойство высоты. Как только я его установил, ниже TextView исчезает. Как предотвратить это?


person Asyl Paitesh    schedule 15.04.2019    source источник
comment
@GulshanYadav Я пытался изменить порядок, но это не сработало. Любая другая идея? Спасибо, в любом случае   -  person Asyl Paitesh    schedule 15.04.2019
comment
В порядке. Я отредактировал код, попробуйте использовать CardView вместо ImageView, в некоторых версиях повышение высоты не работает.   -  person Gulshan Yadav    schedule 15.04.2019


Ответы (2)


Решение. Добавьте android:elevation="5dp" в TextView в файле макета.

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/image_view"
        android:layout_centerInParent="true"
        android:background="@drawable/border"
        android:elevation="4dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="-48dp"
        android:layout_below="@+id/image_view"
        android:elevation="5dp"/> // Add this line
</RelativeLayout>

Вы можете перейти по этой ссылке, чтобы увидеть, как android:elevation работает в Android.

person Son Truong    schedule 16.04.2019
comment
4dp достаточно. Если TextView появится под ImageView в XML, он будет отображаться сверху. - person Tom; 14.05.2020

Вместо этого используйте CardView. Надеюсь, эта работа.

<android.support.v7.widget.CardView
android:layout_gravity="center_horizontal"        
app:cardElevation="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/image_view"
    android:layout_centerInParent="true"
    android:background="@drawable/border"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_marginTop="-48dp"
    android:layout_below="@+id/image_view"/>
</RelativeLayout>

</android.support.v7.widget.CardView>
person Gulshan Yadav    schedule 15.04.2019
comment
Насколько я понимаю, вы пытаетесь добавить текст под изображением, верно? - person Gulshan Yadav; 15.04.2019
comment
Нет, с CardView тоже не работает. Как только я устанавливаю высоту, TextView исчезает :( - person Asyl Paitesh; 15.04.2019
comment
Я пытаюсь добавить текст над изображением и установить высоту, чтобы создать тень на изображении. - person Asyl Paitesh; 15.04.2019
comment
Мне не нужна высота в TextView, мне нужна она в ImageView. Имеет ли высота какое-то отношение к настройке фона в этих представлениях? Проверьте мой отредактированный вопрос. - person Asyl Paitesh; 15.04.2019
comment
Вы пытаетесь создать эффект тени для ImageView?? - person Gulshan Yadav; 15.04.2019
comment
Да, это то, что я пытаюсь сделать. Что-то не так с этим? - person Asyl Paitesh; 15.04.2019
comment
В порядке. Тогда вам следует использовать CardView. Забудьте о высоте. - person Gulshan Yadav; 15.04.2019
comment
Вам нужно добавить зависимости в build.gradle для CardView - person Gulshan Yadav; 15.04.2019
comment
Давайте продолжим это обсуждение в чате. - person Gulshan Yadav; 15.04.2019
comment
Я знаю, я постараюсь вернуть тебя. - person Asyl Paitesh; 15.04.2019
comment
Ваше решение с использованием CardView решило эту проблему, но совершенно по-другому, поэтому мне все еще любопытно, почему это не сработало. Я жду еще несколько дней, может быть, кто-то знает причину, по которой это не сработало, и если я не получу другого лучшего ответа, я приму ваш ответ. В любом случае, спасибо за ваше время! - person Asyl Paitesh; 15.04.2019