Использование Android: повышение уровня приводит к исчезновению TextView

#android #android-xml #android-elevation

#Android #android-xml #android-повышение

Вопрос:

У меня это 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 значение, поэтому его можно отображать поверх изображения. Все работает нормально, пока я не установлю свойство elevation. Как только я его установлю, приведенный ниже текстовый вид исчезнет. Как этого не допустить?

Комментарии:

1. @GulshanYadav Я пытался изменить порядок, но это не сработало. Есть еще идеи? В любом случае спасибо

2. ОК. Я отредактировал код попробуйте использовать CardView вместо ImageView в некоторых версиях повышение высоты не работает

Ответ №1:

Решение: добавьте 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.

Комментарии:

1. достаточно 4dp. Если TextView появится под ImageView в XML, он будет отображаться сверху.

Ответ №2:

Вместо этого используйте 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>
 

Комментарии:

1. Нет, это не работает ни с CardView . Как только я устанавливаю высоту, TextView исчезает: (

2. Я пытаюсь добавить текст над изображением и установить возвышение, чтобы создать эту тень на изображении.

3. Мне не нужно возвышение в TextView, оно мне нужно в ImageView. Имеет ли возвышение какое-то отношение к настройке фона в этих представлениях? Проверьте мой отредактированный вопрос.

4. Да, это то, что я пытаюсь сделать. Что-то не так с этим?

5. Я знаю, я постараюсь вернуть тебя.