2012-04-09 3 views
0

У меня возникли проблемы с настройкой моего TableRow с некоторыми TextViews в TableLayout динамически. У меня две фотографии, одна из них - моя текущая ситуация, а другая - мой макет, ожидаемая ситуация (цель, которую мне нужно достичь). У меня нет XML-макетов; Все они создаются программно, что также необходимо для достижения.Как фиксировать мои TableLayout и TableRow в определенных положениях динамически?

Показанные снимки предназначены для экрана с высоким рейтингом, где я получаю список игроков с высокими баллами и отображаю их полностью в TableLayout. У меня просто проблемы с позициями строк/столбцов.

nothing

Вот мой код:

public void onResume() { 
    super.onResume(); 

    //============================================= 
    TextView number = new TextView(this); 
    number.setText("1"); 
    TextView place = new TextView(this); 
    place.setText("4th"); 
    TextView testScore = new TextView(this); 
    testScore.setText("113489"); 
    table = new TableLayout(this); 
    //rows = new Stack<TableRow>(); 
    TableRow row = new TableRow(this); 
    row.addView(number); 
    row.addView(place); 
    row.addView(testScore); 
    table.addView(row); 
    this.setContentView(table); 
} 

Если кто-нибудь знает, как я должен изменить свой код из текущей ситуации на макете ожидаемой ситуации, я с удовольствием оценит. Если я что-то не так, отправьте комментарий. Заранее спасибо.

ответ

0

Я только что нашел хорошую ссылку о TableLayout и TableRow, создавая определенные позиции динамически. Link is here. Конечно, код здесь - это просто его barebone, используемый для демонстрации простой компоновки положения.

Вот мой код, и данная картина результата:

public void onResume() { 
     super.onResume(); 



     //============================================= 

     dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 1, this.getResources().getDisplayMetrics()); 
     if (dip <= 0) 
      dip = 1; 


     TextView number = new TextView(this); 
     TextView place = new TextView(this); 
     TextView testScore = new TextView(this); 


     number.setText("1"); 
     place.setText("4th"); 
     testScore.setText("113489"); 

     number.setWidth(50 * dip); 
     place.setWidth(75 * dip); 
     testScore.setWidth(150 * dip); 

     number.setPadding(20*dip, 0, 0, 0); 

     table = new TableLayout(this); 
     TableRow row = new TableRow(this); 
     row.addView(number); 
     row.addView(place); 
     row.addView(testScore); 
     table.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT)); 
     this.setContentView(table); 
    } 

Я на самом деле удивлен, что есть способ получения DIP блока. Должен был искать это в первую очередь. : P

nothing

0

Установите вес макета каждого текстового вида на 1 и ширину макета до 0dp. Это приведет к тому, что они будут равномерно распределять доступное пространство. Вы можете использовать макет гравитации слева, в центре и вправо, чтобы обеспечить максимальное разделение.

+0

TextView.setLayoutParams() использует ViewGroup.LayoutParams(), который я не знаю, какие именно параметры того, что подкласс следует использовать. Вы знаете? –

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

  • Нет связанных вопросов^_^