【发布时间】:2016-02-11 19:20:27
【问题描述】:
【问题讨论】:
-
看到这篇我用“android删除线”stackoverflow.com/questions/3881553/…查找的帖子
【问题讨论】:
这样做:
TextView someTextView = (TextView) findViewById(R.id.some_text_view);
someTextView.setText(someString); // SomeString = your old price
someTextView.setPaintFlags(someTextView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
【讨论】:
动态(在运行时)你需要做的:
TextView myTextView= (TextView) findViewById(R.id.some_text_view);
myTextView.setText("myOldPriceHere");
myTextView.setPaintFlags(myTextView.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
【讨论】:
有两种选择:
使用TextView 和Paint.STRIKE_THRU_TEXT_FLAG 标志
将删除线装饰应用于绘制文本的绘制标志。
这是一个例子:
TextView someTextView = (TextView) findViewById(R.id.some_text_view);
someTextView.setText("$29,500");
myTextView.setPaintFlags(myTextView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
或者使用Spannable文本,这是一个例子:
TextView myTextView = (TextView) findViewById(R.id.my_text_view);
myTextView .setText("$29,500", TextView.BufferType.SPANNABLE);
final StrikethroughSpan STRIKE_THROUGH_SPAN = new StrikethroughSpan();
Spannable spannable = (Spannable) myTextView.getText();
spannable.setSpan(STRIKE_THROUGH_SPAN, 0, myTextView.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(spannable);
如您所见,这两个选项非常相似,因此您可以选择其中一个。
【讨论】:
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);
textView.getPaint().setFlags(0); //make it gone
【讨论】:
您可以使用 Spannable 来实现这一点,如果您只需要将其放在文本的一部分中,它会更加灵活。这是一个例子:
textview.setText("29,500", TextView.BufferType.SPANNABLE);
final StrikethroughSpan STRIKE_THROUGH_SPAN = new StrikethroughSpan();
Spannable spannable = (Spannable) textview.getText();
spannable.setSpan(STRIKE_THROUGH_SPAN, 0, textview.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(spannable);
【讨论】: