如何边框一个TextView

时间:2017-08-08 08:03:41

标签: android

我坚持在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" />

目前的结果:

enter image description here

期待结果(标题HOT总是在标题之后)

enter image description here

2 个答案:

答案 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"