标签: spannable

Android:TextView中的Spannable中的"nowrap"

是否可以在TextView中使用类似于WebView中的此功能的spannable?

Bob McDonalds <span style="white-space: nowrap">&lt;b.mcdonalds@domain.com&gt;</span>
Run Code Online (Sandbox Code Playgroud)

我想避免

|Email: Bob McDonalds <b.          |
|mcdonalds@domain.com>             |
Run Code Online (Sandbox Code Playgroud)

我宁愿

|Email: Bob McDonalds              |
|<b.mcdonalds@domain.com>          |
Run Code Online (Sandbox Code Playgroud)

android textview nowrap spannable

5
推荐指数
1
解决办法
1540
查看次数

android中的Spannable和String之间的区别

奇怪的是想知道Spannableandroid中的目的是什么.char数组不够吗?

android spannable

5
推荐指数
1
解决办法
2250
查看次数

将跨区转换为可跨区

我有一个spanned文本需要转换为Spannable. 这就是我在代码中尝试做的事情: Spannable buffer = (Spannable) text; 这段代码给了我一个“无法将 Spannable 转换为 Spanned”。是否可以?如果是这样怎么办?谢谢!

android text casting spanned spannable

5
推荐指数
1
解决办法
2760
查看次数

Android Spanable 文本保存/存储问题

我有一个编辑文本,它有多个彩色文本,如下面的代码。有没有办法存储文本和颜色并再次显示它们?我曾经使用 SharedPreference 来存储字符串整数等,但这不适用于 Spannables。

Spannable span1 = new SpannableString("this");
Spannable span2 = new SpannableString("is");
Spannable span3 = new SpannableString("text");
span1.setSpan(new ForegroundColorSpan(Color.parseColor("#292929")), 0, span1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span2.setSpan(new ForegroundColorSpan(Color.parseColor("#2980b9")), 0, span2.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span3.setSpan(new ForegroundColorSpan(Color.parseColor("#FFFFFF")), 0, span3.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

edittext.setText(TextUtils.concat(span1, span2, span3));
Run Code Online (Sandbox Code Playgroud)

android store android-edittext spannable

5
推荐指数
1
解决办法
3398
查看次数

一个 TextView 中的多个对齐跨度不起作用?

我需要一个文本视图显示两个文本 - 其中一个左对齐,另一个 - 右对齐。在阅读了 spans 之后,我编写了以下代码:

private Spannable generateText(PageModel page) {
    final DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);

    final String pageNumber = page.getNumber() + "  ";
    final String string = pageNumber  + dateFormat.format(new Date(page.getLastModified())) ;
    Spannable spannable = Spannable.Factory.getInstance().newSpannable(string);
    spannable.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_NORMAL), 0, pageNumber.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), pageNumber.length() + 1, string.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    return spannable;
}

Spannable spannable = generateText(page);
textView.setText(spannable);
Run Code Online (Sandbox Code Playgroud)

结果是两者都左(正常)对齐。实际上,根本没有对齐发生,即使我使用居中对齐。字符串部分的边界没有越过,为什么不起作用?你知道为什么这行不通吗?

html layout android spannable

5
推荐指数
0
解决办法
536
查看次数

Android EditText:撰写时如何应用跨度?

当用户撰写时,如何在 EditText 文本上应用跨度?

例如,用户在撰写时激活了“粗体”,因此此后输入的每个字符都应该是粗体

我考虑过向 EditText 添加文本更改侦听器并在用户撰写时更新文本,但我想知道是否有更好的方法来执行此操作。

android android-edittext spannablestring spannable

5
推荐指数
1
解决办法
6624
查看次数

什么是Android Span上下文中的标记对象?

什么是Android Span上下文中的标记对象?

android.text.SpanWatcher
Run Code Online (Sandbox Code Playgroud)

当此类型的对象附加到Spannable时,将调用其方法以通知它已添加,更改或删除其他标记对象.

这里标记对象的含义是什么?

HTML 
Run Code Online (Sandbox Code Playgroud)

超文本标记语言

文本文本是包含指向其他文本的链接的文本.

加价

请告诉我Markup的意思是什么......

编辑

所以标记对象是Span ...感谢pskink

markup android spannable

5
推荐指数
1
解决办法
559
查看次数

在用户键入哈希标记时更改文本的颜色

我正在开发一个用户可以将内容发布到Feed的应用程序.在我的编辑文本(用于撰写)中,文本颜色为灰色.但是,当用户键入一个哈希标记,例如#help时,我需要在键入时将该文本着色为黑色,因此当用户键入"#"时,文本必须为黑色,直到它们开始一个新单词,然后文本颜色需要还原灰色

我一直在尝试使用文本观察器和spannable字符串进行着色.

这是我用textwatcher做的 onTextChanged

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {


            //Remove Text watcher to prevent infinite look
            mTextField.removeTextChangedListener(contentFieldWatcher);
            String startChar = null;
                startChar = Character.toString(s.charAt(start));
                L.i(getClass().getSimpleName(), "CHARACTER OF NEW WORD: " + startChar);


  if (startChar.equals("#")) {
                     tagCheck(s.toString().substring(start), start, start + count);
                }
            }
Run Code Online (Sandbox Code Playgroud)

tagCheck方法

private void tagCheck(String s, int start, int end) {
        mSpannable.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.black_colour)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
Run Code Online (Sandbox Code Playgroud)

mSpannable是一个Spannable.

这种方法的问题是'#'显示为startChar,但是当用户键入下一个字符(符号或字母)时,它显示为startChar.用户键入圣诞老人的情况仍然是startChar.所以我面临的问题是如何在用户键入主题标签时动态着色文本.

所以普通字母可以正常工作,但是当你使用符号时它不会.我希望这个问题很清楚..我已经看了几天这一切都变得朦胧:)

android textwatcher android-edittext spannable

5
推荐指数
1
解决办法
986
查看次数

如何设置 SpannableStringBuilder 的重心?

我在一个 TextView 中使用了两种不同的字体:第一种是 SVG 字体,第二种是 TTF 字体。

要将带有文本的图标设置为 TextView,我正在使用它:

        String icon =getContext().getString(iconId);//"&#xF119;"
        String text = getResources().getString(labelId);//"AnyText"

        int iconLength = icon.length();
        String fulltext = icon + " " + text;
        SpannableStringBuilder spLabelWithIcon = new SpannableStringBuilder(fulltext);
        spLabelWithIcon.setSpan(new CustomTypefaceSpan(TypefaceManager.ICONS.getTypeface()),
                0, iconLength, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        spLabelWithIcon.setSpan(new CustomTypefaceSpan(TypefaceManager.GOTHAM_BOOK.getTypeface()),
                iconLength, fulltext.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

myTextView.setText(spLabelWithIcon);
Run Code Online (Sandbox Code Playgroud)

结果:图标不在行的垂直中心(或者文本不在垂直中心):

在此处输入图片说明

android text spannable

5
推荐指数
0
解决办法
2983
查看次数

在 StyleSpan 中,为什么 Typeface to NORMAL 不能应用于 Typeface to BOLD?

Button btnBold = (Button) findViewById(R.id.btnBold);
    btnBold.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick (View v){
        startSelection = etx.getSelectionStart();
        endSelection = etx.getSelectionEnd();


        Spannable s = etx.getText();
        s.setSpan(new StyleSpan(Typeface.BOLD), startSelection, endSelection, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    }
});


Button btnNormal = (Button) findViewById(R.id.btnNormal);
    btnNormal.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick (View v){
        startSelection = etx.getSelectionStart();
        endSelection = etx.getSelectionEnd();
        Spannable s = etx.getText();
        s.setSpan(new StyleSpan(Typeface.NORMAL), startSelection, endSelection, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    }
});
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我尝试对按钮中选定的文本进行加粗和取消加粗。

例如: 我通过一次选择所有内容将这一行加粗。

现在,如果我通过选择上行中的一些文本来应用取消粗体,那么它将不起作用。

我已经浏览过这些答案,但没有运气:

如何取消 Android Edittext 中选定文本的粗体?

删除跨度上的样式

从 edittext 中选定的文本中删除样式

上述解决方案的问题在于,例如,如果您从文本中选择了五个单词并将它们设置为粗体,现在您选择了该粗体文本的某些部分并取消粗体,那么所有五个单词都将取消粗体。

上述链接中提到的解决方案使用以下代码来删除跨度,这不能正确解决问题

Spannable str = …
Run Code Online (Sandbox Code Playgroud)

android spanned android-edittext spannablestring spannable

5
推荐指数
0
解决办法
536
查看次数