Как разместить Drawable поверх TextView в Android XML
Я пытаюсь создать зачеркнутый текст в моем XML. Я сделал рисование (просто линию) и нарисовал его за текстом, если выполняется условие (используя привязку данных). Проблема в том, что мой текст и зачеркивание имеют разные цвета, и когда добавляется рисование, оно рисуется за текстом, что выглядит странно. Мне нужно, чтобы он появился над текстом, а не за ним. В настоящее время я использую background
Атрибут Android, поэтому имеет смысл, почему он будет отображаться за текстом, однако я не смог найти другие варианты. Единственная связанная помощь, которую я нашел в Интернете, заключалась в использовании drawableTop
, но тогда ничья не появится вообще. Кроме того, я не могу сделать это программно, я хочу сделать это в XML, чтобы мне не нужно было ссылаться на мои взгляды в другом месте. Любая помощь будет оценена. Вот часть моего кода:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/spacing_xs"
android:layout_marginLeft="@dimen/spacing_xs"
android:text="@{@string/text(viewModel.insertThisIntoString)}"
android:background="@{viewModel.displayStrikeThrough.value ? @drawable/strikethrough_text : null}"/>
и мой drawable:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<item>
<shape android:shape="line">
<stroke android:width="2dp"
android:color="@color/app_grey_300"/>
</shape>
</item>
</layer-list>
Код, который я использовал при попытке отобразить ImageView поверх TextView:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/spacing_xs"
android:layout_marginLeft="@dimen/spacing_xs"
android:text="@{@string/text(viewModel.insertThisIntoString)}"/>
<ImageView
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/strikethrough_text"/>
</RelativeLayout>
В идеале я хотел бы, чтобы layout_width для ImageView охватывало ширину TextView, который он покрывает. Я попытался установить ширину RelativeLayout в wrap_content
(так, чтобы его ширина соответствовала ширине TextView), и установите ширину ImageView в match_parent
, чтобы он заполнил ширину RelativeLayout и, следовательно, TextView, однако это не сработало - ширина будет охватывать весь экран. У меня в настоящее время есть в 40dp, чтобы удостовериться, что это появилось.
Кроме того, следует отметить, что я попытался установить drawable как фон и источник ImageView, ни один из которых не работал.
1 ответ
Так как вы используете android:layout_height="wrap_content"
в ImageView
, это займет столько высоты, сколько ему нужно. Но твой Drawable
не является растровым изображением, а также не имеет размера. Так что это займет ровно 0px высоты, так как ему нужно 0px без размера.
Вы должны установить конкретное значение для высоты или сделать ImageView
соответствует размеру TextView
в зависимости от того, как вы хотите, чтобы это выглядело.