当前位置: 首页 > 知识库问答 >
问题:

编辑文本中的粗体和斜体

满俊楠
2023-03-14

在编辑文本中,用户应选择他们键入的内容是粗体、斜体还是正常。在我的情况下,当用户选择粗体时,整个编辑文本将更改为粗体,如果他再次选择斜体,则整个编辑文本将变为斜体。当用户选择粗体键入某些内容时,它应该是粗体的,当他选择斜体或正常时,他键入的单词应该是斜体或正常,而不是前一个粗体。此外,当我在编辑文本中打印输入时,即使以粗体显示,它也被正常打印。

我在底部有我的代码

<EditText
    android:id="@+id/check_edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="check"
    />

这是我将编辑文本设置为粗体或斜体的地方

bold.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        editCheck.setTypeface(editCheck.getTypeface(), Typeface.BOLD);
    }
});
italics.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        editCheck.setTypeface(editCheck.getTypeface(), Typeface.ITALIC);
    }
});
normal.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        editCheck.setTypeface(editCheck.getTypeface(), Typeface.NORMAL);
    }
});
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        result.setText(editCheck.getText().toString());
    }
    });

我如何实现这一点

共有2个答案

巫墨一
2023-03-14
匿名用户

尝试在特定的xml文件中将属性< code > Android:text style = " bold | italic " 设置为EditText

壤驷深
2023-03-14

如果您想要在文本视图中使用不同的字体样式,您可以使用超文本标记语言进行设置。看看这篇文章:

是否可以在TextView中有多种样式?

因此,在您的情况下,您可以保存以超文本标记语言格式输入的文本,具体取决于用户单击放置的内容。

这也将帮助您在结果textView中打印它,因为您将从HTML中打印它。

编辑:为了解决所有文本都变得粗体或斜体字的问题,您必须编辑onClick事件以了解您正在编写的内容的类型。还可以使用TextWatcher知道插入的文本是什么。例如:

int typeFaceSelected = Typeface.NORMAL //private global var with NORMAL as default value
String resultedText = ""; //private global var, this will give to your textview the result of the edittext in HTML
bold.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        typeFaceSelected = Typeface.BOLD
    }
});
italics.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        typeFaceSelected = Typeface.ITALIC
    }
});
normal.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        typeFaceSelected = Typeface.NORMAL
    }
});

//You can edit the text you add
editCheck.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {}

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String sAux = s.toString().subString(start, start + count);

            switch(typeFaceSelected)
            {
                case Typeface.NORMAL:
                    resultedText = sAux;
                break;
                case Typeface.ITALIC:
                    resultedText = "<i>" + sAux + "</i>";
                break;
                case Typeface.BOLD:
                    resultedText = "<b>" + sAux + "</b>";
                break;
            }
            editCheck.setText(Html.fromHtml(resultedText));
        }
});

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        result.setText(HTML.fromHTML(resultedText));
    }
    });

上面的代码是基于TextWatcher的onTextChanged、beforeTextChanged和postTextChanged之间的差异

另外,我还没有测试它,所以我不确定它是否有效,但至少我认为它足以得到这个想法。

 类似资料:
  • 我正在尝试在itext 5中使用TextField。我的字体名是“微軟正黑體英文是“Microsoft JhengHei”。我想用粗体和黑色的字体。 初始化字体(3是字体。BOLD|字体。ITALIC和BC是我的基本颜色) 我有一个文本字段变量,并将fontZh设置为setFont。 pdf结果只有字体样式、大小和颜色是正确的。但这种大胆和不自然是行不通的。

  • 我正在为我的学校网站写一个网页编辑器,一切都很顺利,但我遇到了一个问题,删除字体样式从选定的文本。我可以选择文本,然后让jquery将span标记应用到它,并关联一个css类,当我想从所选文本中删除该类时,我的问题就来了。这是我目前所掌握的... 我有一个事件监听器,它拾取粗体按钮按下并触发下面的函数... 这个函数很好的应用样式,但我不知道我将如何删除它与切换。我正在努力理解如何使用范围选择来删

  • 使用PDFBox提取PDF时,有没有办法保留文本格式? 我有一个解析PDF文档以获取信息的程序。当PDF的新版本发布时,作者使用粗体或斜体字文本来指示新信息,并在指示省略的文本中删除或加下划线。在PDFbox中使用基本的Stripper类返回所有文本,但格式被删除,因此我无法判断文本是新的还是省略的。我目前正在使用下面的项目示例代码: 如果我简单地将PDF文本复制并粘贴到保存格式的rich tex

  • 问题内容: 如何在iPhone / iPad 上设置粗体和斜体?我搜索了论坛,但没有任何帮助。有人可以帮我吗? 问题答案: 您可以设置字体名称列表来代替’fontWithName’属性。链接位于此处

  • 我在用一个工具自动生成CSS,它生成下面的@font-face标签和对应的段落Style 注意,指定的字体已经是Garamond字体的斜体版本,从技术上来说,< code>font-style:italic行是多余的。 然而,这并不奏效(我在FF、Chrome 所以,我有2个问题 > 为什么这不起作用,也就是说,为什么使用会导致它不起作用? 有没有办法通过javascript“覆盖”@font f

  • 问题内容: 我不确定这是否可能,但是我有一种情况,我想在HTML select标记的选项内将文本的 一部分 (不是全部)加粗。 我尝试使用b标签以及强标签,但没有运气(在Chrome上)。CSS可能会起作用,但是由于它在元素级别起作用,所以我不确定该怎么做。 有什么办法吗? 问题答案: 没有; 这是不可能的。 相反,您可以使用Javascript制作伪造的下拉列表。