android:tag 字符,具有行间距的Android spannable字符串

博客讨论了如何在标签云中创建行间距,其中标签具有背景颜色。作者遇到的问题是无法在背景颜色之间创建间隔。通过提供一个自定义的绘图方法,他们展示了如何在每个标签的顶部和底部填充颜色来模拟行间距,同时保持背景颜色的一致性。代码示例显示了一个可能的解决方案,但作者询问是否有更优的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个标签云,其中标签有背景颜色.不幸的是,我无法获得行间距.

我们假设这是文本云:

tag1 tag2 tag3

tagtext4 tagtext5

这是文本视图的样式:

@color/gray_value

sans-serif-condensed

BackgroundColorSpan用于为标签设置蓝色背景颜色.然而,线之间没有空间,即两条线的背景颜色没有分开.

当我为文本视图设置行间距时,例如到12sp,它增加了行间距,但使用标记的背景颜色而不是textview背景颜色来建立行间距.

知道如何使用文本视图背景颜色获得行间距?

更新

使用这个solution作为指导,我提出了这种方法:绘制文本的背景,在顶部和底部用填充绘制文本的背景,绘制文本.因为我之前没有使用过画布,所以可能有更好的方法.无论如何 – 这是代码.

public void draw(Canvas canvas, CharSequence text, int start, int end, float x,

int top, int y, int bottom, Paint paint)

{

float padding;

float right

RectF rect;

right = x + measureText(paint, text, start, end);

padding = 4f;

rect = new RectF( x, top, right, bottom );

paint.setColor( mContext.getResources().getColor(R.color.color1) );

rect = new RectF( x, top + padding, right, bottom - padding);

paint.setColor( mContext.getResources().getColor(R.color.bg_color_tag_item) );

canvas.drawRect(rect, paint);

paint.setColor( mContext.getResources().getColor(R.color.data_entry_value) );

canvas.drawText(text, start, end, x, y, paint);

}

它现在看起来像这样:

很高兴知道:有更好的解决方案吗?

Tag的使用 package com.yarin.android.qiehuan; import android.app.AlertDialog; import android.app.Dialog; import android.app.TabActivity; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; public class Activity01 extends TabActivity { //声明TabHost对象 TabHost mTabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost对象 mTabHost = getTabHost(); /* 为TabHost添加标签 */ //新建一个newTabSpec(newTabSpec) //设置其标签和图标(setIndicator) //设置内容(setContent) mTabHost.addTab(mTabHost.newTabSpec("test1") .setIndicator("TAB 1",getResources().getDrawable(R.drawable.img1)) .setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("test2") .setIndicator("TAB 2",getResources().getDrawable(R.drawable.img2)) .setContent(R.id.textview2)); mTabHost.addTab(mTabHost.newTabSpec("test3") .setIndicator("TAB 3",getResources().getDrawable(R.drawable.img3)) .setContent(R.id.textview3)); //设置TabHost的背景颜色 mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); //设置TabHost的背景图片资源 //mTabHost.setBackgroundResource(R.drawable.bg0); //设置当前显示哪一个标签 mTabHost.setCurrentTab(0); //标签切换事件处理,setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener() { // TODO Auto-generated method stub @Override public void onTabChanged(String tabId) { Dialog dialog = new AlertDialog.Builder(Activity01.this) .setTitle("善谢谢提醒") .setMessage("现在选中了:"+tabId+"标签") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); } }).create();//创建按钮 dialog.show(); } }); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值