2016-02-09 2 views
-2

У меня есть «строки» = слово, представляющее символы, помещенные в массив с именем «bWord», чтобы поместить символы в кнопку, проблема в том, что пространство «» считается символом, а также помещено в кнопку. Я не хочу, чтобы строка «» создала линию прерывания вместо вызова bWordПерерыв в силовой линии для каждого слова

таких слов, как «Обложка книги», будет выглядеть так: [B] [O] [O] [K] [] [C] [O ] [V], [E] [R]

Я хочу, чтобы выглядеть как

[B], [O], [O], [K]

[C], [O], [V], [ E] [R]

это изображение текущего выпуска:

here

мне сказали, чтобы создать новый макет, но я не знаю, как идти об этом

это код, я использую

 // draw word buttons 

    RelativeLayout wordLayout = (RelativeLayout) findViewById(R.id.wordlayout); 
    String[] word = ld.getLevelSpecific().getProcessedWord(); 

    for (int i = 0; i < word.length; i++) { 
     Button temp = new Button(this); 
     temp.setText(""); 
     temp.setTypeface(null, Typeface.BOLD); 
     temp.setTextSize(TypedValue.COMPLEX_UNIT_SP, isd.getWordTextSize()); 
     temp.setIncludeFontPadding(false); 
     temp.setId(idCount * 2 + i); 
     temp.setTag(Integer.valueOf(i)); 
     temp.setBackgroundResource(R.drawable.button_shape_letter); 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
       (int) (isd.getWordButtonSize() * orm.getScaleRatio()-2), 
(int) (isd.getWordButtonSize() * orm.getScaleRatio()+6*orm.getScaleRatio())); 

     if (i > 0) { 
      p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1); 
     } else { 
      p.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
      p.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
     } 


     p.setMargins(isd.getExtraspaceWord()+1, isd.getExtraspaceWord(), 
       isd.getExtraspaceWord()+1, isd.getExtraspaceWord()); 
     temp.setLayoutParams(p); 
     bWord[i] = temp; 
     temp.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       onWordPressed((Integer) v.getTag()); 

      } 
     }); 
     wordLayout.addView(temp); 
    } 

ответ

0

Я не уверен, если Я правильно понимаю ваш вопрос.

Вы упоминали слова "Book Cover", но ваш скриншот показывает "Билл Клинтон" ...

Я сделал исправить, чтобы показать:

[B] [I] [L] [L]

[C], [L], [I], [N], [Т] [O], [N]

Вместо того, чтобы:

[B], [I], [L] [L], [] [ C] [L] [I] [N] [T] [O] [N]

Как исправить:

Вариант 1:

Вы можете заменить свой RelativeLayout два LinearLayouts. Line1 и Line2, например.

Затем, во время выполнения, вы звоните:

LinearLayout Line1 = (LinearLayout) findViewById(R.id.line1); 
LinearLayout Line2 = (LinearLayout) findViewById(R.id.line2); 
... 
if(word[i].equals(" ")) 
    insertingInFirstLine = false; 
... 
if(insertingInFirstLine) 
    Line1.addView(newButton); 
else 
    Line2.addView(newButton); 

Хорошее Дело в том, что вам не нужно беспокоиться о Просмотр идентификаторов. Просто создайте линейные макеты с горизонтальной ориентацией и поместите их один ниже другого.

Когда слово имеет только одну строку, вы можете установить видимость line2 к «View.GONE»

Опции 2:

Если вам действительно нужно использовать Relative Layout, я обновил свой «FOR "петля. Таким образом, после пробела char ("") все новые представления будут добавлены ниже первой строки. Ниже приведен пример:

int lineDivider = 1000; 
for (int i = 0; i < word.length; i++) { 
    if(word[i].equalsIgnoreCase(" ")) { 
     lineDivider = i; 
    } else { 
     Button temp = new Button(this); 
     ... 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(      
        (int) (isd.getWordButtonSize() * orm.getScaleRatio()-2), 
        (int) (isd.getWordButtonSize() * orm.getScaleRatio()+6*orm.getScaleRatio())); 

     if (i > 0) { 
      if(i < lineDivider) { 
       // First Line Items 
       p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1); 
      } else if (i == lineDivider + 1) { 
       // First Item of Second Line 
       p.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
       p.addRule(RelativeLayout.BELOW, idCount * 2); 
      } else { 
       // Second Line Items 
       p.addRule(RelativeLayout.BELOW, idCount * 2); 
       p.addRule(RelativeLayout.RIGHT_OF, idCount * 2 + i - 1); 
      } 
     } else { 
      // First ITEM 
      p.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
      p.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
     } 
     .... 
    } 
} 
+0

Спасибо, я попытался с помощью этого кода, но он показывает дубликата локальную переменную «я» ошибка, вызванная lineDivider = я; Я использую переменную «i» для пула букв также в разделе ответов, где вы видите, что кнопка facebook – bomsn

Смежные вопросы