2014-04-02 3 views
0

나는 굵게, 기울임 꼴, 굵게 기울임 꼴, 밑줄이 쳐지는 등 몇 가지 기본 옵션이있는 간단한 텍스트 편집기를 Android에서 개발 중입니다. 다음은 해당 버튼을 클릭 할 때 선택한 텍스트에 효과를 적용하는 데 사용한 코드입니다.android에서 텍스트 스타일을 확인하는 방법

public void buttonClick(View target){ 
    Log.i("Information ", "In click"); 
    View parentView = (View) target.getParent(); 
    final EditText editorField = (EditText) parentView.findViewById(R.id.editor_field); 
    int startSelection = editorField.getSelectionStart(); 
    int endSelection = editorField.getSelectionEnd(); 
    Spannable textEdit = editorField.getText(); 

    if(target.getId() == R.id.boldButton){ 
     textEdit.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startSelection, endSelection, 0); 
    } else if(target.getId() == R.id.italicButton){ 
     textEdit.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), startSelection, endSelection, 0); 
    } else if(target.getId() == R.id.underlineButton){ 
     textEdit.setSpan(new UnderlineSpan(), startSelection, endSelection, Spannable.SPAN_MARK_MARK); 
    } else if(target.getId() == R.id.strikeButton){ 
     textEdit.setSpan(new StrikethroughSpan(), startSelection, endSelection, Spannable.SPAN_MARK_MARK); 
    } else if(target.getId() == R.id.boldItalicButton){ 
     textEdit.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), startSelection, endSelection, 0); 
    } 
} 

하지만 텍스트 효과를 적용하기 전에 선택한 텍스트가 이미 텍스트 효과가 있는지 여부를 확인해야합니다. 즉, 처음에는 선택된 텍스트가 굵게 표시되므로, 굵게 단추를 클릭하면 텍스트 효과를 제거해야합니다. 나는 이것을하는 방법을 이해하지 못한다. 어느 누구도 나를 도울 수 있습니까?

감사합니다.

답변

1

당신은() 메소드 getSpans를 호출 스타일의 목록을 얻을 수 있습니다 :

StyleSpan[] styleSpans = textEdit.getSpans(startSelection, endSelection, StyleSpan.class); 

그리고 다음 StyleSpan 클래스의 메서드 사용

if (styleSpans[i].getStyle() == android.graphics.Typeface.BOLD){ 
    ... 
} 
관련 문제