android中Textview的屏蔽属性
我的android中Textview的屏蔽属性,android,transparentproxy,Android,Transparentproxy,我的活动中有一个滚动视图,滚动视图的背景有多种颜色 <ScrollView ----------> <RelativeLayout -------------/> </ScrollView> 我希望我的文字颜色与背景颜色相同。我尝试了很多方法来解决这个问题,但都没有成功 在iOS中,为了实现这一点,他们使用了RSMaskedLabel(第三方类),但我在Android中没有发现类似的东西 我仍然没有找到任何解决办法,谁能帮我一下吗。我尝试使用位图和画布,
活动中有一个滚动视图
,滚动视图
的背景有多种颜色
<ScrollView ---------->
<RelativeLayout -------------/>
</ScrollView>
我希望我的文字颜色与背景颜色相同。我尝试了很多方法来解决这个问题,但都没有成功
在iOS中,为了实现这一点,他们使用了RSMaskedLabel
(第三方类),但我在Android中没有发现类似的东西
我仍然没有找到任何解决办法,谁能帮我一下吗。我尝试使用位图和画布,但对我不起作用
如何使用自定义文本视图实现此目的的一些指导原则:
扩展TextView
组件
在绘制背景和文本的位置创建位图
和画布
将所需背景色绘制到分配的画布中
(例如color.argb(80255 255 255)
)
使用Paint
have modePorterDuffXfermode(mode.CLEAR)
(记住:只分配Bitmap
和Canvas
一次),因为您将文本绘制到Bitmap
将位图
绘制到文本视图
画布中
以下是一些开始使用的示例代码:
public class TransparentTextView extends TextView {
private Paint mTextPaint;
private Bitmap mBitmapToDraw;
public TransparentTextView(Context context) {
super(context);
setup();
}
public TransparentTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setup();
}
public TransparentTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setup();
}
private void setup() {
mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mTextPaint.setTextSize(getTextSize());
mTextPaint.setStyle(Paint.Style.FILL);
mTextPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
}
@Override
protected void onDraw(Canvas canvas) {
if (mBitmapToDraw == null) {
mBitmapToDraw = Bitmap.createBitmap(getWidth(), getHeight(),
Bitmap.Config.ARGB_8888);
if (mBitmapToDraw != null) {
Canvas c = new Canvas(mBitmapToDraw);
c.drawColor(Color.argb(80, 255, 255, 255));
c.drawText(getText().toString(), getPaddingLeft(),
getPaddingTop(), mTextPaint);
}
}
if (mBitmapToDraw != null) {
canvas.drawBitmap(mBitmapToDraw, 0, 0, null);
} else {
super.onDraw(canvas);
}
}
}
如果您正在动态设置文本,则需要重置MbitMatoDraw
,以使其刷新。我认为您无法使用标准的Android API进行此操作。所以你必须想出你自己的办法。如果您在编写代码方面有问题,可以回到这里寻求代码方面的帮助。我在Github中看到了iOS的第三方类RSMaskedLabel,但我没有找到android的任何内容。我尝试过给Textview透明,但没有成功。这是Github的链接。你能提供任何示例来解释所有这些吗?我用最少的代码制作了组件。这里不支持文本对齐,但您可以通过检查重力、测量文本高度和宽度与视图大小等来实现。这对我不起作用,文本不显示。唯一透明的矩形图像是dispalyedWhat平台和设备?Galaxy nexus,Android 4.2
public class TransparentTextView extends TextView {
private Paint mTextPaint;
private Bitmap mBitmapToDraw;
public TransparentTextView(Context context) {
super(context);
setup();
}
public TransparentTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setup();
}
public TransparentTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setup();
}
private void setup() {
mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mTextPaint.setTextSize(getTextSize());
mTextPaint.setStyle(Paint.Style.FILL);
mTextPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
}
@Override
protected void onDraw(Canvas canvas) {
if (mBitmapToDraw == null) {
mBitmapToDraw = Bitmap.createBitmap(getWidth(), getHeight(),
Bitmap.Config.ARGB_8888);
if (mBitmapToDraw != null) {
Canvas c = new Canvas(mBitmapToDraw);
c.drawColor(Color.argb(80, 255, 255, 255));
c.drawText(getText().toString(), getPaddingLeft(),
getPaddingTop(), mTextPaint);
}
}
if (mBitmapToDraw != null) {
canvas.drawBitmap(mBitmapToDraw, 0, 0, null);
} else {
super.onDraw(canvas);
}
}
}