2016-01-21 65 views
1

我在我的應用程序中爲動態添加和刪除TextView的unerline。Android動態添加下劃線

首先,我使用AQuery在片段的onCreateView中添加下劃線: aQuery.id(R.id.tv_help_consult).getTextView().setPaintFlags(aq.id(R.id.tv_help_consult).getTextView().getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

它看起來很好。
enter image description here

但是當我刪除下劃線(並重新加入)有事情發生的字體,所以你可以看到像素:

enter image description here

我使用的clickListenner這些方法來改變強調:

private void headingFontHighlightOn(TextView heading) { 
     //  removing underline 
     heading.setPaintFlags(0); 
     //  changing color 
     heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.orange)); 
    } 


private void headingFontHighlightOff(TextView heading) { 
     //  making underline 
     heading.setPaintFlags(heading.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
     //  changing color 
     heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); 
     } 

當然,我可以使用替代的字符串資源與<u>標籤,只是改變字符串資源烏爾斯河。
但我想firure什麼這裏happenning

編輯:萬一有人需要,
我的最終解決方案是基於Chintan巴瓦的答案。
我只是修改方法(當使用不同的TextViews)應獨立於字符串資源:

private void headingFontHighlightOn(TextView heading) { 
     //  removing underline 
     heading.setText(heading.getText().toString()); 
     //  changing color 
     heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.orange)); 
    } 

    private void headingFontHighlightOff(TextView heading) { 
     //  making underline 
     String underlinedText = "<u>" + heading.getText() + "</u>"; 
     heading.setText(Html.fromHtml(underlinedText)); 

     //  changing color 
     heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); 
    } 

而且我刪除了所有的油漆標誌。

+0

一個簡單的解決方案將使用兩個字符串文本,一個與undeline和一個沒有它 –

+0

是啊,我有在我的腦海這個解決方案,但什麼是錯的王氏這一個? – Androider

回答

3

可以在TextView

heading.setText(Html.fromHtml("<u>Legal assistance</u>")); 

使用這個下劃線文本,並從文本TextView

​​
0

刪除下劃線您可以使用可點擊的跨度,如果你想要的底線應該可點擊。如果不只是忽略onclick操作。您可以使用下面的代碼來強調您喜歡的方式

String str =「您有」+ sessionUserId.getfudiyoPointsSession() +「fudiyo點可用。什麼是fudiyo點「;

 int index = str.indexOf("."); 
     TextView txtfudiyo_point = (TextView) findViewById(R.id.user_fudiyo_point); 

     SpannableString ss = new SpannableString(str); 
     ClickableSpan clickableSpan = new ClickableSpan() { 
      @Override 
      public void onClick(View textView) { 
       try { 
        showTermsConditions(); 
       } catch (Exception e) { 
        ErrorEmail.sendEmail(UserHomeScreen.this, e); 
       } 
      } 

      @Override 
      public void updateDrawState(TextPaint ds) { 

       super.updateDrawState(ds); 
       ds.setColor(Color.RED); 
       ds.setUnderlineText(true); 
      } 
     }; 
     ss.setSpan(clickableSpan, index + 2, ss.length(), 
       Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

     txtfudiyo_point.setText(ss); 
     txtfudiyo_point.setMovementMethod(LinkMovementMethod.getInstance()); 
+0

謝謝,但對我而言,這看起來太複雜了 – Androider