java - 向跨度字符串添加额外的文本可以消除我的粗体文本。

标签 java android html android-edittext spannablestring

我正在接受用户输入并将该文本作为粗体文本添加到警报对话框的编辑文本框中。问题是,当用户第二次、第三次或第四次(等等)添加更多文本时,以前的粗体文本就会消失,只显示最新的粗体文本。感谢您的帮助,谢谢。

这是我的代码:

newField.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            storyText = story.getText().toString();


            AlertDialog.Builder builder = new AlertDialog.Builder(
                    getActivity());
            builder.setTitle("Title");

            // Set up the input
            final EditText input = new EditText(getActivity());
            input.setHint("Ex: Noun, Verb, Color, etc");
            // Specify the type of input expected; this, for example, sets
            // the input as a password, and will mask the text
            builder.setView(input);

            // Set up the buttons
            builder.setPositiveButton("Add Field",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            int y;
                            for(int i = 0; i < 200; i++)
                            {
                                field[i] = "";
                            }
                            for(y = 0; y < 200; y++)
                            {
                                if(field[y].equals(""))
                                {
                                    field[y] = input.getText().toString();
                                    break;
                                }
                            }


                            storyText = storyText + " " + "<b>" + field[y] + "</b>" + " ";
                            storyText.replaceAll("\n", "<br />");
                            spanned = Html.fromHtml(storyText);
                            story.setText(spanned);

                            Toast.makeText(
                                    getActivity().getApplicationContext(),
                                    "Field Added", Toast.LENGTH_SHORT).show();
                        }
                    });
            builder.setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            dialog.cancel();
                        }
                    });

            builder.show();


        }
    });

最佳答案

您从 TextView 获取的是 String 而不是 SpannableString,因此您将丢失格式。

目前您有类似的内容:

String storyText = story.getText().toString();
// ...
storyText = storyText + " " + "<b>" + field[y] + "</b>" + " ";
storyText.replaceAll("\n", "<br />");
spanned = Html.fromHtml(storyText);
story.setText(spanned);

但是您可能想尝试以下操作:

SpannableString spannedStoryText = new SpannableString(story.getText());
// ...
String additionalStoryText = " " + "<b>" + field[y] + "</b>" + " ";
additionalStoryText.replaceAll("\n", "<br />"); // assuming you only want this for the appended text.
spannedStoryText = new SpannableString(TextUtils.concat(spannedStoryText, Html.fromHtml(additonalStoryText)));
story.setText(spannedStoryText);

关于java - 向跨度字符串添加额外的文本可以消除我的粗体文本。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854837/

相关文章:

java - 抽象类和多态性

java - 如何在本地启动我的 grails 应用程序?

java - 一种更优雅的转换方式

android - 是否可以使用 TwoLineListItem 填充 ListView?

javascript - JQuery UI .sortable ('toArray' )返回 HTMLUListElement 而不是 id 数组

php - 如何在 Wordpress 中的 <h1> 中添加 <span>

java - 使用 thymeleaf 将参数传递给 spring Controller

android - android中的滑动展开动画

android - Xamarin PCLStorage 包 : What is the root folder this PCLStorage reference to

html - 调整 Outlook 桌面版 Logo