2012-05-25 4 views
0

У меня возникает одна проблема с рендерингом TextView и Seekbar внутри диалогового окна.Простая макетная проблема

Я практиковал этот учебник от android site

Вопрос внутри для автоматического повтора TextView & SeekBar должны быть добавлены в 5 раз и должны отображаться в диалоговом окне. Но отображается только один TextView.

Вот код:

public void onCheckedChanged(RadioGroup rgroup, int rbutton) { 
    String eqSettingName = ((RadioButton) findViewById(rbutton)).getText() 
      .toString(); 
    if (eqSettingName.equals("Custom")) { 
     Dialog dialog = new Dialog(this); 
     dialog.setTitle("Custom Equalizer"); 
     LinearLayout LL = new LinearLayout(this); 

     short noOfBands = mEqualizer.getNumberOfBands(); 
     final short minEQLevel = mEqualizer.getBandLevelRange()[0]; 
     final short maxEQLevel = mEqualizer.getBandLevelRange()[1]; 

     for (short i = 0; i < noOfBands; i++) { 
      short band = i; 

      TextView freqTV = new TextView(this); 
      freqTV.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
      freqTV.setGravity(Gravity.CENTER_HORIZONTAL); 
      freqTV.setText((mEqualizer.getCenterFreq(band))/1000 + " Hz"); 
      LL.addView(freqTV); 

      SeekBar bar = new SeekBar(this); 
      bar.setLayoutParams(layoutParams); 
      bar.setMax(maxEQLevel - minEQLevel); 
      bar.setProgress(mEqualizer.getBandLevel(band)); 
      LL.addView(bar); 


     } 

     /* 
     LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.customseekbar, 
       (ViewGroup) findViewById(R.id.rlCustomEqualizerSeekBar)); 
     */ 
     dialog.addContentView(LL, layoutParams); 
     dialog.show(); 
    } 

} 
+0

Почему комментарий LayoutInflater прокомментирован? Вероятно, это ошибка. – Codeman

ответ

1

Ваши LinearLayout по умолчанию orientation="horizontal". Измените ориентацию на вертикальную, и вы увидите, что хотите.

LL.setOrientation(LinearLayout.VERTICAL); 
+0

Спасибо, человек ... но я новичок в макетах. Можете ли вы объяснить, как это работает –

+0

@rahul s: Ваша ориентация ориентации была горизонтальной, что означает, что каждый из ваших 10 виджетов был отображен один справа от другого (и, следовательно, не отображается). Устанавливая ориентацию по вертикали, каждый виджет отображается ниже предыдущего. –

0

ориентирован ваш LinearLayout правильно?

LL.setOrientation(LinearLayout.VERTICAL); 
+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+0

Это может быть не ответ, но я ударил эту проблему раньше, и это был ответ. Мне не нравится звучать так, что я этого не сделаю, но ответы на полицейские вопросы, которые вы не видите нужным, не способствуют этой теме. – Phix