这可以在一个TextView中设置不同的textSize吗?我知道我可以使用以下方式更改文本样式:
TextView textView = (TextView) findViewById(R.id.textView);
Spannable span = new SpannableString(textView.getText());
span.setSpan(arg0, 1, 10, arg3);
textView.setText(span)
Run Code Online (Sandbox Code Playgroud)
我知道范围开始...文本结束我想改变大小.但我能为使用arg0和arg3?
我有Spannable对象,我想通过我之前加载的自定义字体设置其字体.
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/font_Name.ttf");
Spannable span1 = /*Spannable Item*/;
/// I want to set span1 to have tf font face???
/// Here where I want help.
Run Code Online (Sandbox Code Playgroud)
编辑:
我的问题是我想为文本视图设置两种不同的自定义字体,所以我正在使用Spannable
我将一个spannable对象分成3个部分,做不同的操作,然后我需要合并它们.
Spannable str = editText.getText();
Spannable selectionSpannable = new SpannableStringBuilder(str, selectionStart, selectionEnd);
Spannable endOfModifiedSpannable = new SpannableStringBuilder(str, selectionEnd, editText.getText().length());
Spannable beginningOfModifiedSpannable = new SpannableStringBuilder(str, 0, selectionStart);
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我还没有找到所需的方法或构造函数.
我有Spannable Object一个Clickable Object集来.当Spannable String它显示在TextView它有蓝色文本和蓝色下划线(指示用户该文本是可点击的)时.我的问题是如何防止出现蓝色下划线TextView?
我正在尝试构造一个SpannableString,使它看起来像这样:

两个字符(m,s)应小于其余字符.我试图在一个SpannableString中保存所有文本,并且我还尝试通过SpannableStringBuilder连接两个SpannableStrings.一个Spannable的代码如下所示:
spannable.setSpan(new RelativeSizeSpan(0.75f), spannable.length() - 1, spannable.length(), 0);
Run Code Online (Sandbox Code Playgroud)
但是,只应用了一种格式 - 使用SpannableStringBuilder时,只有"m"更小,而对整个文本使用一个SpannableString时,只有"s"更小.
调试还显示Spannables似乎只包含一个RelativeSizeSpan实例,这意味着一个类型只能有一个Span.这是真实的还是预期的行为?是否建议连接TextViews?
编辑:顺便说一下,我试图在这里删除HTML.fromHtml()调用性能原因(许多GC调用).
我有ImageSpan一段文字.我注意到的是,周围的文本总是在文本行的底部绘制 - 更准确地说,文本行的大小随着图像的增长而增加,但文本的基线不会向上移动.当图像明显大于文本大小时,效果相当难看.
这是一个示例,大纲显示的界限TextView:

我试图让周围的文本相对于正在显示的图像垂直居中.以下是蓝色文本显示所需位置的相同示例:

以下是我受约束的约束:
我已尝试android:gravity="center_vertical"在TextView上使用该属性,但这没有任何效果.我认为这只是文本行的垂直居中,但在文本行中,文本仍然在底部绘制.
我目前的思路是创建一个自定义跨度,根据行的高度和当前文本大小来移动文本的基线.这个跨度将包含整个文本,我将不得不计算与ImageSpans 的交集,所以我也可以避免移动图像.这听起来相当令人生畏,我希望有人能提出另一种方法.
任何和所有的帮助表示赞赏!
Tweet o = tweets.get(position);
TextView tt = (TextView) v.findViewById(R.id.toptext);
//TextView bt = (TextView) v.findViewById(R.id.bottomtext);
EditText bt =(EditText)findViewById(R.id.bottomtext);
bt.setText(o.author);
Spannable spn = (Spannable) bt.getText();
spn.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC)
, 0, 100, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//bt.setText(o.author);
tt.setText(o.content);
Run Code Online (Sandbox Code Playgroud)
我在我的Android应用程序中设置了Twitter数据.我想使用Spannable使字体粗体和斜体,但它不起作用,给出错误.我该怎么做?
我想创建类似于此图像上看到的内容:

我设法使用SpannableStringBuilder创建evertyhing,橙色圆角矩形除外.我可以使用BackgroundColorSpan将背景设置为该颜色,但我找不到一种方法使其圆整.任何想法我怎样才能做到这一点?
提前致谢!
编辑:我正在使用Xamarin.Android,但这是我的代码:
stringBuilder.SetSpan(new BackgroundColorSpan(Application.Context.Resources.GetColor(Resource.Color.orangeColor)), stringBuilder.Length() - length, stringBuilder.Length(), SpanTypes.ExclusiveExclusive);
Run Code Online (Sandbox Code Playgroud) 假设您有以下字符串:
String s = "The cold hand reaches for the %1$s %2$s Ellesse's";
String old = "old";
String tan = "tan";
String formatted = String.format(s,old,tan); //"The cold hand reaches for the old tan Ellesse's"
Run Code Online (Sandbox Code Playgroud)
假设您希望以此字符串结束,但也Span为任何替换的单词设置了特定的集合String.format.
例如,我们还想做以下事情:
Spannable spannable = new SpannableString(formatted);
spannable.setSpan(new StrikethroughSpan(), oldStart, oldStart+old.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.setSpan(new ForegroundColorSpan(Color.BLUE), tanStart, tanStart+tan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
是否有结识的开始指数的稳健的方式old和tan?
请注意,只搜索'old'会在'cold'中返回'old',因此无效.
什么会的工作,我想,正在寻找%[0-9]$s事前,并计算补偿值以反映在更换String.format.这看起来很令人头疼,我怀疑可能有一种方法String.format可以提供有关其格式化细节的更多信息.好吧,有吗?
我有一个简单的Button:
<Button
android:id="@+id/test"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
并尝试通过以下方式更改文本属性:
SpannableString span = new SpannableString(text);
span.setSpan(new AbsoluteSizeSpan(8, true), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
testButton.setText(span);
Run Code Online (Sandbox Code Playgroud)
它适用于Android 4.3但不适用于5.0.
有趣的是,当我将实现更改Button为TextView5.0时,它可以正常工作.似乎是Button棒棒糖的东西.