2016-12-06 3 views
1

글 머리 기호를 안드로이드 텍스트로 표시하고 싶습니다. 나는 그들을 성공적으로 추가했다. 인터넷을 통해 검색 한 결과 글 머리 기호를 추가 할 수 있음이 확인되었습니다. 그러나 텍스트가 한 줄 이상으로 간다면 html 목록처럼 적절한 간격을 따르지 않습니다.글 머리 기호를 Android에 적절한 형식으로 추가하십시오.

아래 스크린 샷을 참조하십시오.

enter image description here

나는 총알을 추가하려면 다음 코드를 사용했다.

String longDescription = "Enhanced bass performance.\n" + 
       "Lightweight headband enhances comfort and adds durability\n" + 
       "Easy to adjust headband ensures optimum fit and comfort\n" + 
       "2 metre-long cable"; 

     String arr[] = longDescription.split("\n"); 
     StringBuilder desc = new StringBuilder(); 
     for (String s : arr){ 
      desc.append("<li>"+s+"</li>"); 
     } 
     String newDesc = "<ul>"+desc+"</ul>"; 

     tvProdDesc.setText(Html.fromHtml(newDesc, null, new UlTagHandler())); 

은 여기 내

UlTagHandler.java

public class UlTagHandler implements Html.TagHandler { 

    public void handleTag(boolean opening, String tag, Editable output, 
          XMLReader xmlReader) { 
     if(tag.equals("ul") && !opening) output.append("\n"); 
     if(tag.equals("li") && opening) output.append("\n•\t"); 
    } 
} 

입니다하지만 워드 프로세서가하는 것처럼 텍스트가 제대로 포맷해야합니다.

나는

enter image description here

우리가 위의 이미지에 simillar 아무것도 할 수 출력 유형을 원하는?

+0

없이 그것이 내가 총알을 추가 한 참조 중복되지 않습니다. 나는 형식있는 텍스트를 원했다. –

+0

당신은 어떤 minSdk를 제공합니까? – deadfish

+0

minSdkVersion 16 및 targetSdkVersion 23 –

답변

4

이 예제를 만족 시키시겠습니까?

public class MainActivity extends AppCompatActivity { 

    private TextView tvProdDesc; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tvProdDesc = (TextView) findViewById(R.id.text1); 

     String longDescription = "Enhanced bass performance.\n" + 
       "Lightweight headband enhances comfort and adds durability\n" + 
       "Easy to adjust headband ensures optimum fit and comfort\n" + 
       "2 metre-long cable"; 

     String arr[] = longDescription.split("\n"); 

     int bulletGap = (int) dp(10); 

     SpannableStringBuilder ssb = new SpannableStringBuilder(); 
     for (int i = 0; i < arr.length; i++) { 
      String line = arr[i]; 
      SpannableString ss = new SpannableString(line); 
      ss.setSpan(new BulletSpan(bulletGap), 0, line.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
      ssb.append(ss); 

      //avoid last "\n" 
      if(i+1<arr.length) 
       ssb.append("\n"); 

     } 

     tvProdDesc.setText(ssb); 
    } 

    private float dp(int dp) { 
     return getResources().getDisplayMetrics().density * dp; 
    } 
} 

결과 :

enter image description here

관련 문제