我正在尝试用span来替换从getText()返回的可编辑部分.
我尝试过getText().replace(),但这只适用于CharSequences.
我试图这样做的原因是我可以一个接一个地突出显示EditText的部分(经过一小段延迟),而不是通过并突出显示整个EditText(对于大文件来说可能很慢).
有没有人知道我将如何做到这一点?
我有一个SpannableString对象的问题.
下面是一个简短的例子:
SpannableString spanstr = new SpannableString("Bold please!");
spanstr.setSpan(new StyleSpan(Typeface.BOLD), 0, spanstr.length(), 0);
SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(spanstr);
sb.append("\n"); // A newline
sb.append("The first line is bold. This one isn't.");
CharSequence cq = sb.subSequence(0, sb.length());
// ^There's no such method to return a SpannableString,
// so I try to return a CharSequence instead.
// And then, at last:
TextView contentView = (TextView) findViewById(R.id.some_id);
contentView.setText(cq);
Run Code Online (Sandbox Code Playgroud)
这个例子试图做的是显示:
请大胆!
第一行是粗体.这个不是.
但问题是:文本的第一行不会以粗体显示.
为什么不这样做呢?
我想为一个单词设置自定义字体,该单词出现在字符串中的任何位置.
例:海@abc你好吗?亲爱的朋友你好,你在哪里@abc
在上面的例子中,我必须为"abc"应用自定义字体.我尝试过Spannable类,但我无法得到它.
final TextView txtComments = (TextView)view.findViewById(R.id.tv_comments);
SpannableStringBuilder SS = new SpannableStringBuilder(alcomments.get(i));
SS.setSpan (new CustomTypefaceSpan("", tf), 0, SS.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
txtComments.setText(SS);
Run Code Online (Sandbox Code Playgroud)
但它影响整个字符串.请指导我如何实现它.
我有一个textview,我正在尝试绘制图像跨度以及其中的一些文本.
有时,当内容包含到下一行时,某些图像不可见.
在向textview添加跨度时我应该记住什么?
我应该提供的任何其他细节,我可以在这里粘贴我的代码.
我已经添加TextView了我的Dialog片段,并在此动态显示Spannable数据TextView.但它不适用于文本的Spannable效果.
这是我的代码,用于生成Three Spannable String并添加到TextView中.
TextView textViewTicketSummary = (TextView) dialog.findViewById(R.id.ticketSummaryTextView);
SpannableStringBuilder summary = new SpannableStringBuilder();
SpannableString VehicleCaptureSpan, TotalVehicleSpan, DurationTimeSpan;
String VehicleCapture = "Total Vehicles Captured:9";
VehicleCaptureSpan = new SpannableString(VehicleCapture);
VehicleCaptureSpan.setSpan(new StyleSpan(Typeface.BOLD), 0, VehicleCapture.length(), 0);
VehicleCaptureSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, VehicleCapture.length(), 0);
VehicleCaptureSpan.setSpan(new RelativeSizeSpan(1.5f), 0, VehicleCapture.length(), 0);
String TotalVehicle = "Total Car Park Capacity:10 ";
TotalVehicleSpan = new SpannableString(TotalVehicle);
TotalVehicleSpan.setSpan(new StyleSpan(Typeface.BOLD), 0, TotalVehicle.length(), 0);
TotalVehicleSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, TotalVehicle.length(), 0);
TotalVehicleSpan.setSpan(new RelativeSizeSpan(1.5f), 0, TotalVehicle.length(), 0); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Flutter 应用程序,它使用 Textfield.
我声明TextField如下:
new TextField(
controller : _controller,
decoration : new InputDecoration(
hintText: 'Message...'
)
)
Run Code Online (Sandbox Code Playgroud)
该TextField显示在我的窗口小部件,但是当我在上面敲击时,键盘会自动关闭,以下错误出现在控制台
E/SpannableStringBuilder(17860): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
Run Code Online (Sandbox Code Playgroud)
我在 Android(三星 Galaxy Grand Prime,Android 5.1)上使用 IntelliJ 中的 Flutter 插件运行它。
我怎么能解决这个问题?
编辑:正如在这个答案中看到的(Android - SPAN_EXCLUSIVE_EXCLUSIVE 跨度不能为零长度),我试过切换键盘(谷歌和三星),仍然相同
我有自动链接的textview,但每当我将自定义范围(ClickableSpan)添加到textview时,它自动链接到网址和手机号码无效.有没有简单的方法来解决这个问题.应用样式但单击不起作用.
我尝试在单元测试中比较两个 SpannableStrings 文本,但收到错误:
java.lang.RuntimeException: Method toString in android.text.SpannableString not mocked. See http://g.co/androidstudio/not-mocked for details.
Run Code Online (Sandbox Code Playgroud)
调试后,我验证在单元测试中根本无法使用 SpannableString 类。
测试实施:
java.lang.RuntimeException: Method toString in android.text.SpannableString not mocked. See http://g.co/androidstudio/not-mocked for details.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
java.lang.RuntimeException: Method toString in android.text.SpannableString not mocked. See http://g.co/androidstudio/not-mocked for details.
at android.text.SpannableString.toString(SpannableString.java)
at java.lang.String.valueOf(String.java:2994)
at view_model.ViewModelTest$When getCredits() returns multiple invites$1.invokeSuspend(ViewModelTest.kt:113)
at ViewModelTest$When getCredits() returns multiple invites$1.invoke(ViewModelTest.kt)
at kotlinx.coroutines.test.TestBuildersKt$runBlockingTest$deferred$1.invokeSuspend(TestBuilders.kt:50)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.test.TestCoroutineDispatcher.dispatch(TestCoroutineDispatcher.kt:50)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:305) ...
Run Code Online (Sandbox Code Playgroud)
showInvitesTextValue 变量初始化时发生错误。
如何在单元测试中使用 SpannableString 类?
我有一个ListView,我设法在其上显示许多文本.一些文本格式为BOLD.为了使这些文本变得粗体,我使用了Spannable并且它有效!但是,当我再次向下滚动时,索引[0]变为多个.
为了避免那个场景,我使用了一个持有者来保存我的TextViews.我设法在滚动中解决了这个问题,但由于某些原因,文本样式是BOLD,在我的ListView中消失了.我怎样才能做到这一点?
MainActivity.java
private void populateListView() {
String[] source = { "Lorem ipsum dolor sit amet", "consectetuer adipiscing elit",
"sed diam nonummy nibh " };
final SpannableString out0 = new SpannableString(source[0]);
final SpannableString out2 = new SpannableString(source[2]);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
out0.setSpan(boldSpan, 6, 17, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
out2.setSpan(boldSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.items, // Layout to use (create)
source) { // Items to be displayed
public View getView(int position, View convertView, ViewGroup parent) {
View …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个包含很少SpannableString对象的对话 因为这是对话框,所以我需要能够在用户离开应用程序时存储它并稍后再返回它.
但问题是如何写入SpannableString包裹?
android ×10
spannablestring ×10
textview ×4
autolink ×1
custom-font ×1
flutter ×1
kotlin ×1
parcelable ×1
replace ×1
spannable ×1
string ×1
testing ×1
unit-testing ×1