2014-12-29 2 views
-1

Xamarin.Android에서 서식있는 텍스트 상자를 만들고 있습니다. 지금까지 선택한 텍스트를 굵게 또는 기울임 꼴로 만들 수 있습니다. 그러나 이제는 굵게 버튼을 클릭하면 선택한 텍스트가 정상으로 돌아갑니다. 그래서 내 질문은, 어떻게 내가 선택한 텍스트가 굵게 있는지 확인합니까? 내가 방법을 물론선택한 텍스트가 굵은 글꼴인지 확인하는 방법은 무엇입니까?

void bButton_Click(object sender, EventArgs e) 
    { 
     var richEditText = FindViewById<EditText>(Resource.Id.richEditText); 


     SpannableStringBuilder sb = new SpannableStringBuilder(richEditText.Text); 

     string selected = sb.SubSequenceFormatted(richEditText.SelectionStart, richEditText.SelectionEnd).ToString(); 

     if(selected == Android.Graphics.TypefaceStyle.Bold) // It,s not working. 
     So please suggest me how to check selected text is bold or not 

     following line for to make bold 

     sb.SetSpan(new StyleSpan(Android.Graphics.TypefaceStyle.Bold), richEditText.SelectionStart, richEditText.SelectionEnd,0); 


     richEditText.TextFormatted = sb; 
+0

내가 만든 편집 내용을 취소 한 이유는 무엇입니까? 잘못된 문법, 잘못된 형식 및 누락 된 태그로 돌아갑니다. – Cheesebaron

답변

0

을 다음 시도, 당신은 String 객체를 요청할 수 없습니다 그것은 Enum인지. 이 같은

뭔가 작동합니다

button.Click += (sender, args) => 
{ 
    var start = editText.SelectionStart; 
    var end = editText.SelectionEnd; 

    if (start > end) 
    { 
     var temp = end; 
     end = start; 
     start = temp; 
    } 

    var ss = (ISpannable)editText.TextFormatted; 

    // get all spannables in selection, there could be multiple 
    var spans = ss.GetSpans(start, end, Java.Lang.Class.FromType(typeof(StyleSpan))); 

    var exists = false; 

    // loop over all spans 
    foreach (var t in spans) 
    { 
     var style = ((StyleSpan)t).Style; 

     // if one of the spans is bold 
     if (style == TypefaceStyle.Bold) 
     { 
      // remove the span 
      ss.RemoveSpan(t); 
      exists = true; 
     } 
    } 

    // if none of the spannables were bold, lets make it bold 
    if (!exists) 
     ss.SetSpan(new StyleSpan(TypefaceStyle.Bold), start, end, 0); 
}; 

그래서 기본적으로 내가 위의 코드에서 뭐하는 거지 그들의 StyleTypefaceStyle.Bold이 있는지 여부를 확인하기 위해 선택의 모든 Spannable 인스턴스를 확인하는 것입니다. 주조는 꽤 순진하기 때문에 조심하십시오.

+0

@ Cheesedaron 네, 맞습니다. 나는이 문제에 대해 혼란 스러웠 기 때문에이 줄을 의도적으로 추가했습니다. 하지만 이걸 잘 풀어 줘. 고맙습니다. –

+0

이 질문에 대한 답변을 얻는다면 대답을 수락하십시오 : http://meta.stackexchange.com/a/5235 – Cheesebaron

관련 문제