#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. Я знаю, я постараюсь вернуть тебя.