首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >edittext中的粗体和斜体

edittext中的粗体和斜体
EN

Stack Overflow用户
提问于 2018-11-21 22:16:38
回答 2查看 1.3K关注 0票数 0

在编辑文本中,用户应该选择他们键入的内容是粗体、斜体还是普通。在我的例子中,当用户选择粗体时,整个编辑文本变为粗体,如果用户再次选择斜体,则整个编辑文本变为斜体。当用户选择粗体输入时,它应该是粗体,当他选择斜体或普通时,他在那之后键入的单词应该是斜体或普通,而不是前一个粗体。此外,当我在编辑文本中打印输入时,即使以粗体显示,它也会正常打印。

我在底部有我的代码

代码语言:javascript
运行
复制
<EditText
    android:id="@+id/check_edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="check"
    />

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

代码语言:javascript
运行
复制
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());
    }
    });

我如何实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2018-11-21 22:37:53

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

Is it possible to have multiple styles inside a TextView?

因此,在您的例子中,您可以根据用户单击的内容将输入的文本保存为HTML格式,将<b>设置为粗体,将<i>设置为斜体,依此类推。

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

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

代码语言:javascript
运行
复制
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));
    }
    });

上面的代码是基于这个Differences between TextWatcher 's onTextChanged, beforeTextChanged and afterTextChanged

此外,我还没有测试过它,所以我不确定它是否可以工作,但至少我认为它已经足够让我明白了。

票数 2
EN

Stack Overflow用户

发布于 2019-01-21 15:47:52

尝试将属性android:textStyle="bold|italic"设置为特定xml文件中的EditText

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53414053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档