如何在Android XML中将Drawable定位在TextView上

时间:2017-08-15 20:57:06

标签: android xml android-drawable android-databinding

我正在尝试在XML中创建删除线文本。我做了一个drawable(只是一行),如果满足条件,则在文本后面绘制(使用数据绑定)。问题是我的文字和删除线是不同的颜色,当添加drawable时,它被绘制在文本后面,看起来很奇怪。我需要它出现在文本上,而不是它背后。目前,我使用class Student(object): def __init__(self, name, surname, grade, hours): self.name = name self.surname = surname self.grade = grade self.hours = hours def getName(self): return '{}'.format(self.name) def getSurname(self): return '{}'.format(self.surname) def getGrade(self): #return '{} {}'.format(self.grade, self.hours) for a,b in zip(self.grade, self.hours): return (a,b) def getHours(self): return '{}'.format(self.hours) def getQPoints(self): pass stud1 = Student("John","Brown",["A","B","A"],["15.0","25.0","20.0"]) stud2 = Student("Mary","Watson","B","20") print (stud1.getName()) print (stud1.getSurname()) print (stud2.getName()) print (stud2.getSurname()) print (stud1.getGrade()) print (stud1.getHours()) Android属性,所以它有理由为什么它会在文本后面呈现,但我找不到任何其他选项。我在网上找到的唯一相关帮助就是使用background,但是抽签根本就不会出现。另外,我不能以编程方式执行此操作,我想在xml中执行此操作,以便我不需要在其他地方引用我的视图。任何帮助,将不胜感激。以下是我的一些代码:

drawableTop

和我的绘画:

<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}"/>

我在尝试通过TextView显示ImageView时使用的代码:

<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的layout_width跨越它所覆盖的TextView的宽度。我尝试将RelativeLayout的宽度设置为<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> (使其宽度与TextView的宽度相匹配),并将ImageView的宽度设置为wrap_content,以便填满RelativeLayout的宽度,因此TextView,但不起作用 - 宽度将跨越整个屏幕。我目前在40dp时确保它会出现。

另外,应该注意的是,我尝试将drawable设置为ImageView的背景和src,但两者都不起作用。

1 个答案:

答案 0 :(得分:1)

由于您在android:layout_height="wrap_content"中使用ImageView,因此需要尽可能多的高度。但是你的Drawable不是位图,也没有大小本身。因此它需要精确的0px高度,因为它需要0px而没有大小 您应该为高度设置一些具体值,或者使ImageView匹配大小为TextView,具体取决于您希望的样子。