如何在xml中组合TextViews?

时间:2017-12-10 12:10:46

标签: android xml

我试图在android中的xml文件中构建此视图,以表示recyclelerview中的列表项

enter image description here

但是我得到了这个观点

enter image description here

这是我的代码

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="horizontal"
    android:padding="5dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/image_news"
            android:layout_width="100dp"
            android:layout_height="100dp"
            app:srcCompat="@drawable/ic_perm_identity_grey_400_48dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:orientation="horizontal"
        android:padding="10dp">

        <TextView
            android:id="@+id/txt_news_name"
            android:layout_width="135dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:text="Mohamed Alaa"
            android:textColor="@android:color/black"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/txt_news_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="added a new photo to the album"
            android:textSize="16sp" />

    </LinearLayout>

</LinearLayout>

如何改进我的代码以获得所需结果?

我希望只有在没有编写java代码的情况下才能在xml文件中应用任何答案

2 个答案:

答案 0 :(得分:0)

这两个TextView只能是一个,并使用像这样的字符串资源:

<string name="added_photo_message"><b>%1$s</b> added a new photo to the album <b>%2$s</b>.</string>

使用Html.fromHtml或使用spannable。

在你的RecyclerView适配器中你可以使用这个fromHtml方法(以避免在Android N上添加新参数时弃用的警告:

@SuppressWarnings("deprecation")
public static Spanned fromHtml(String source) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY);
    } else {
        return Html.fromHtml(source);
    }
}

并在同一个Recyclerview适配器中调用它,如:

yourTextView.setText(fromHtml(getString(R.string.added_photo_message), userName, albumName)));

答案 1 :(得分:0)

做这样的事情:

TextView tv = (TextView) findViewById(R.id.yourTextView);

String name = "Mohammed Alaa";
String album = "Instagram Photos";

SpannableStringBuilder sb = new SpannableStringBuilder();

sb.append(name,new StyleSpan(android.graphics.Typeface.BOLD),Spannable.SPAN_INCLUSIVE_INCLUSIVE);
sb.append(" added a new photo to the album ");
sb.append(album,new StyleSpan(android.graphics.Typeface.BOLD),Spannable.SPAN_INCLUSIVE_INCLUSIVE);
sb.append(".");

tv.setText(sb);