在线直播系统源码,个人主页用户标签添加实现

在线直播系统源码,个人主页用户标签添加实现的相关代码

代码实现: 自定义TextView

 

1
public class TagTextView extends AppCompatTextView {<br>    private View view;//标签布局的最外层布局<br>    private Context mContext;<br>    private TextView tv_tag;<br>    private StringBuffer content_buffer;<br>    //必须重写所有的构造器,否则可能会出现无法inflate布局的错误!<br>    public TagTextView(Context context) {<br>        super(context);<br>        mContext = context;<br>    }<br>    public TagTextView(Context context, AttributeSet attrs) {<br>        super(context, attrs);<br>        mContext = context;<br>    }<br>    public TagTextView(Context context, AttributeSet attrs, int defStyleAttr) {<br>        super(context, attrs, defStyleAttr);<br>        mContext = context;<br>    }<br>    public void setContentAndTag(String content, List<String> tags) {<br>        content_buffer = new StringBuffer();<br>        for (String item : tags) {//将每个tag的内容添加到content后边,之后将用drawable替代这些tag所占的位置<br>            content_buffer.append(item);<br>        }<br>        content_buffer.append(content);<br>        SpannableString spannableString = new SpannableString(content_buffer);<br>        for (int i = 0; i < tags.size(); i++) {<br>            String item = tags.get(i);<br>            View view = LayoutInflater.from(mContext).inflate(R.layout.layout_texttab, null);//R.layout.tag是每个标签的布局<br>            tv_tag = view.findViewById(R.id.tv_tag);<br>            tv_tag.setText(item);<br>            Bitmap bitmap = convertViewToBitmap(view);<br>            Drawable d = new BitmapDrawable(bitmap);<br>            d.setBounds(0, 0, tv_tag.getWidth(), tv_tag.getHeight());//缺少这句的话,不会报错,但是图片不回显示<br>            ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM);//图片将对齐底部边线<br>            int startIndex;<br>            int endIndex;<br>            startIndex = getLastLength(tags, i );<br>            endIndex = startIndex + item.length();<br>            Log.e("tag", "the start is" + startIndex + "the end is" + endIndex);<br>            spannableString.setSpan(span, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);<br>        }<br>        setText(spannableString);<br>        setGravity(Gravity.CENTER_VERTICAL);<br>    }<br>    private static Bitmap convertViewToBitmap(View view) {<br>        view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));<br>        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());<br>        view.buildDrawingCache();<br>        Bitmap bitmap = view.getDrawingCache();<br>        return bitmap;<br>    }<br>    private int getLastLength(List<String> list, int maxLength) {<br>        int length = 0;<br>        for (int i = 0; i < maxLength; i++) {<br>            length += list.get(i).length();<br>        }<br>        return length;<br>    }<br>}

 

自定义一个layout_texttab布局

 

1
<?xml version="1.0" encoding="utf-8"?><br><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br>    android:layout_width="match_parent"<br>    android:layout_height="match_parent"<br>    android:orientation="vertical"><br>    <TextView<br>        android:id="@+id/tv_tag"<br>        android:layout_width="wrap_content"<br>        android:layout_height="wrap_content"<br>        android:layout_gravity="center_vertical"<br>        android:layout_marginBottom="2dp"<br>        android:layout_marginRight="5dp"<br>        android:background="@drawable/round_blue"<br>        android:gravity="center_vertical"<br>        android:paddingBottom="2dp"<br>        android:paddingLeft="3dp"<br>        android:paddingRight="3dp"<br>        android:text="标签"<br>        android:textColor="@android:color/white"<br>        android:textSize="12sp"/><br></LinearLayout>

 

 

使用

 

1
<com.zc.tool.TagTextView<br>        android:id="@+id/text_tab"<br>        android:layout_width="match_parent"<br>        android:layout_height="wrap_content"<br>        android:layout_margin="12dp"<br>        android:textColor="@color/white"<br>        android:gravity="center" /><br> List<String> tags = new ArrayList<>();<br>        tags.add("@用户");<br>        tags.add("@程序猿");<br>        tags.add("@产品经理");<br>        textTab.setContentAndTag("改个需求", tags);

 

以上就是在线直播系统源码,个人主页用户标签添加实现得相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示