删除 Android 中的 Paint Flag
我的代码如下所示:
TextView task_text = (TextView) view.findViewById(R.id.task_text);
task_text.setPaintFlags( task_text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
这会导致文本上出现删除线效果。但是,我想知道如何删除设置后的标志,以及如何检测设置了标志。
我知道这是一个按位运算,但我尝试过 ~ 和 - 运算符,但都不起作用。
My code looks like this:
TextView task_text = (TextView) view.findViewById(R.id.task_text);
task_text.setPaintFlags( task_text.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
This causes a strike through effect to appear on the text. However, I'd like to know how to remove the flag once set, and how to detect that the flag is set.
I understand this is a bitwise operation, but I've tried both ~ and - operators, neither work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
要删除标志,这应该可行:
这意味着设置除 Paint.STRIKE_THRU_TEXT_FLAG 之外的所有设置标志。
检查是否设置了标志(编辑:有一段时间我忘记了它是java......):
To remove a flag, this should work:
Which means set all the set flags, except of
Paint.STRIKE_THRU_TEXT_FLAG
.To check if a flag is set (Edit: for a moment I forgot it is java...):
在科特林中
In Kotlin
这也有效:
This also works:
使用异或运算符
^
代替|
与&(~)
组合:检查当前是否设置了标志:
Use exclusive OR operator
^
instead of|
with&(~)
combination:Check if flag is currently setup:
在我看来,
只需设置其默认标志是更好的选择。否则,文本会显得锯齿状。 TextView(EditText扩展TextView)中的默认标志是
并设置一个新的paintflag将替换以前的。我做了一个测试来验证一下。所以,就像这样:
In my opinion,
just set its default flag is a better choice. Otherwise, the text will be looked jagged. The default flag in TextView (EditText extends TextView) is
And set a new paintflag will replace the previous one. I have made a test to verify it. So, just like this:
|------------------------------------------------ -|
|<*>|使用 textView 下划线:
|------------------------------------------------ -|
|*|添加下划线:
|*|删除下划线:
|*|检查下划线:
|*|切换下划线:
|--------------------------------------------------|
|<*>| Underline with a textView :
|--------------------------------------------------|
|*| Add Underline :
|*| Remove Underline :
|*| Check Underline :
|*| Toggle Underline :
Text查看详情_实际_价格;
//并从您的xml文件中查找iddetails_actual_price.setPaintFlags
(details_actual_price.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
TextView details_actual_price;
//and find id from your xml file
details_actual_price.setPaintFlags(details_actual_price.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
//用于适配器调用
Textviewdetails_actual_price;
//并找到id
holder.actulPrice.setPaintFlags(holder.actulPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
//used for adapter calss
Textview details_actual_price;
// and find id
holder.actulPrice.setPaintFlags(holder.actulPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
我尝试在 kotlin 中使用 kotlin 按位运算符使用上述方法,但得到了奇怪的结果......
所以为了删除我刚刚所做的标志
I tried using the above mentioned methods in kotlin using kotlin bitwise operators and I was getting weird results...
so to remove a flag I just did
在 Kotlin 中:
设置“删除线”标志:
删除此标志:
In Kotlin:
to set "strike thru" flag:
to remove this flag: