Android 切换编辑文本字体
大家好,我正在制作一个应用程序,用户只需点击一个按钮就可以将可显示的文本斜体化Android 切换编辑文本字体,android,android-edittext,spannable,Android,Android Edittext,Spannable,大家好,我正在制作一个应用程序,用户只需点击一个按钮就可以将可显示的文本斜体化 // Captures Contextual Menu Clicks// public void onContextualMenuItemClicked(MenuItem item) { int id = item.getItemId(); if (id == R.id.bold) { // do some stuff } if (id == R.id.italic
// Captures Contextual Menu Clicks//
public void onContextualMenuItemClicked(MenuItem item) {
int id = item.getItemId();
if (id == R.id.bold) {
// do some stuff
}
if (id == R.id.italic) {
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
spannable.setSpan(new StyleSpan(Typeface.ITALIC) , startSelection , endSelection , 0);
StyleSpanRemover spanRemover = new StyleSpanRemover();
spanRemover.RemoveStyle(spannable,startSelection,endSelection,Typeface.ITALIC);
}
此代码使其为斜体
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
spannable.setSpan(new StyleSpan(Typeface.ITALIC) , startSelection , endSelection , 0);
这使得它不斜体
StyleSpanRemover spanRemover = new StyleSpanRemover();
spanRemover.RemoveStyle(spannable,startSelection,endSelection,Typeface.ITALIC
我希望用户单击相同的按钮来调整和取消调整斜体。如果我可以使用Statation来获取所选单词的字体,该怎么办?这样它就知道是否要斜体化
更新:这就是我现在拥有的
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
StyleSpan[] spans = spannable.getSpans(startSelection, endSelection, StyleSpan.class);
if (spans.length == 0) {
spannable.setSpan(new StyleSpan(Typeface.ITALIC), startSelection, endSelection , 0);
} else {
spannable.setSpan(new StyleSpan(Typeface.NORMAL), startSelection, endSelection , 0);
}
即使代码运行代码
spannable.setSpan(new StyleSpan(Typeface.NORMAL), startSelection, endSelection , 0);
并使其恢复正常。但是它不会将spans.length设置回零,因此我无法再次将其斜体化。如何将spans.length设置为零。您可以使用getSpansstartSelection、endSelection、StyleSpan.class查看选择范围中存在哪些跨距。基于此,您可以决定是否以及如何将文本斜体化。注意:用户可能会突出显示包含普通文本和斜体文本的部分
编辑
我如何在if语句中使用它?感谢Jordan:如果该范围内没有跨距,则不能使用斜体。否则,有些东西是斜体的。我得到了它的前提,是的。如果getSpansstartSelection、endSelection、StyleSpan.class=,我就是不知道如何将其放入代码中?{ }
StyleSpan[] spans = spannable.getSpans(startSelection, endSelection, StyleSpan.class);
if (spans.length == 0) {
// no spans, italicize text here
} else {
// TODO
}