我坚持在Textview的末尾添加标签。或者可能是Textview的最后一个文本的边界。
诸如(Hot,Trending,.. etc ..)之类的标签必须位于标题的末尾。如果后面有空格则与标题相同,否则为新行
请参阅以下屏幕截图
更新(上传XML代码)
bg_border_label_test.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="4dp" />
<stroke
android:width="2dp"
android:color="#a30014" />
</shape>
item_post.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rlContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16sp"
android:layout_marginRight="16sp">
<ImageView
android:id="@+id/imvPostImage"
android:layout_width="120dp"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_marginTop="16sp"
android:background="#df7217"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/tvPostTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imvPostImage"
android:layout_marginLeft="16sp"
android:layout_toEndOf="@+id/imvPostImage"
android:layout_toRightOf="@+id/imvPostImage"
android:ellipsize="end"
android:ems="10"
android:lineSpacingExtra="-3dp"
android:maxLines="3"
android:textColor="#000"
android:textSize="16sp"
tools:text="Alan Walker vs Coldplay - Hymn For The Weekend" />
<TextView
android:id="@+id/tvPostLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvPostTitle"
android:layout_alignParentRight="true"
android:background="@drawable/bg_border_label_test"
android:maxLines="1"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:textColor="#a30014"
android:textSize="12sp"
android:textStyle="bold"
tools:text="HOT" />
<mgift.views.component.TextViewPlus
android:id="@+id/tvPublishDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imvPostImage"
android:layout_alignLeft="@+id/tvPostTitle"
android:maxLines="1"
android:textColor="@color/text_manatee"
android:textSize="@dimen/v4_small_size_text"
app:font="@string/open_sans_regular"
tools:text="3 hours ago" />
目前的结果:
期待结果(标题HOT总是在标题之后)
答案 0 :(得分:1)
您可以创建一个drawable并将其设置为textView
的背景,请参阅下面的drawable示例代码 -
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="6px" android:color="#ff0000"/>
<padding
android:bottom="12dp"
android:left="12dp"
android:right="12dp"
android:top="12dp" />
<corners android:radius="30dp" />
</shape>
此外,如果要在文本末尾连接特定标签,可以创建该标签的图像,然后使用SpannableString
在文本后连接图像。
例如,您可以参考以下代码 -
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append("Alan Walker vs Coldplay - Hymn ");
String hot = "Hot";
Drawable d = getResources().getDrawable(R.drawable.ic_hot_label_24dp);
d.setBounds(0, 16, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
SpannableString hotSpannable= new SpannableString(hot);
hotSpannable.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
builder.append(hotSpannable);
tvPostTitle.setText(builder, TextView.BufferType.SPANNABLE);
如果您需要更多帮助,请与我们联系。
答案 1 :(得分:0)
在Drawable
中添加以下代码。例如:edit_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="0dp" />
<solid android:color="#ffffff" />
<stroke
android:width="3px"
android:color="#918e8e"/>
</shape>
在布局中调用此名称(在TextView下):
android:background="@drawable/edit_background"