2016-12-06 4 views
1

Я хотел показать патроны в тексте андроида. Я добавил их успешно. Я просматриваю через Интернет и обнаружил, что вы можете добавить пули. но если текст идет более чем на одну строку, он не следует за правильным интервалом, как это делает список html.Добавить Bullets с правильным форматированием в 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

Можем ли мы сделать что-нибудь для всего напоминает изображению?

+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