需要在多行文本中添加报价作为可绘制内容,如下面提到的屏幕所示。就像您看到的引号是多行文本的开头,而下一行文本只是从下面的引号开始。
我需要使用TextView来实现这一点,引用应该是可绘制的。
如果我正在使用TextView的drawableLeft属性,其显示如下图所示。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!\nHello World!\nHello World!\nHello World!"
android:drawableStart="@drawable/ic_quote"
android:drawableLeft="@drawable/ic_quote"/>
答案 0 :(得分:1)
您可以创建一个SpannableString来添加可绘制对象:
TextView myTextView = (TextView) findViewById(R.id.myTextView);
ImageSpan imageSpan = new ImageSpan(this, R.drawable.ic_quote);
SpannableString spannableString = new SpannableString("*" + myTextView.getText()); // "*" will be replaced by your drawable
int start = 0; // the start index, inclusive
int end = 1; // the end index, exclusive
int flag = 0;
spannableString.setSpan(imageSpan, start, end, flag);
myTextView.setText(spannableString);
在您的布局中:
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!\nHello World!\nHello World!\nHello World!"/>
答案 1 :(得分:0)
尝试使用android:gravity="top"
如果它不起作用,则以这样的负边距进行
android:drawablePadding="-20sp"
另一种替代方法是在ImageView
内的TextView
旁边放置一个LinearLayout
,以便您可以施加重力
答案 2 :(得分:0)
您可以使用SpannableStringBuilder。
val spannableText = SpannableStringBuilder("*Your text!").apply {
val imageSpan = ImageSpan(context, R.drawable.your_icon)
setSpan(imageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
}
textView.setText(spannableText, TextView.BufferType.SPANNABLE)
符号*将被放置在您的图标上。