2011-12-30 6 views
1

Я попыталсяКак работает addView() TableRow?

private void addSnapPictureRow(TableLayout table, Bitmap bitmap) { 
     /* 
     * 1st row = TextView (Check In) 
     */ 
     TableRow row = new TableRow(this); 
     row.setGravity(Gravity.CENTER_HORIZONTAL); 
     // add text 
     TextView text = new TextView(this); 
     text.setText("Snap Picture"); 
     TableRow.LayoutParams textLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT); 
     textLayoutParams.setMargins(100, 0, 0, 0); 
     row.addView(text, textLayoutParams); 

     // add picture 
     ImageView picture = new ImageView(this); 
     picture.setImageResource(R.drawable.adium); 
     row.addView(picture); 

     /* 
     * 2nd row = View (separator) 
     */ 
     TableRow separator = new TableRow(this); 
     View line = new View(this); 
     TableRow.LayoutParams separatorLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 1); 
     separatorLayoutParams.setMargins(100, 0, 0, 0); 
     line.setBackgroundColor(Color.BLUE); 
     separator.addView(line, separatorLayoutParams); 

     // add row to table 
     table.addView(row); 
     // add a separator 
     table.addView(separator); 
    } 

Но картина никогда не показывал. Если я изменю гравитацию на CENTER_HORIZONTAL, тогда она отображает только небольшую часть изображения.

enter image description here

При создании таблицы с XML, я думал, что он автоматически выравнивается по горизонтали. Я не могу понять, как работает макет TableRow. Может ли кто-нибудь пролить меня на это свет?

ответ

2

Добавление дополнительного LinearLayout для каждой строки решет мою проблему;). Изгиб предыдущей строки приводит к тому, что изображение выходит из экрана.

private void addSnapPictureRow(TableLayout table, Bitmap bitmap) { 
     /* 
     * 1st row = TextView (Check In) 
     */ 
     TableRow row = new TableRow(this); 
     LinearLayout outerLayout = new LinearLayout(this); 
     // add text 
     TextView text = new TextView(this); 
     text.setText("Snap Picture"); 
     LinearLayout.LayoutParams textLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     textLayoutParams.setMargins(100, 0, 0, 0); 

     // add picture 
     ImageView picture = new ImageView(this); 
     LinearLayout.LayoutParams pictureLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     picture.setImageResource(R.drawable.adium); 
     pictureLayoutParams.setMargins(20, 0, 0, 0); 

     outerLayout.addView(text, textLayoutParams); 
     outerLayout.addView(picture, pictureLayoutParams); 
     row.addView(outerLayout); 

     /* 
     * 2nd row = View (separator) 
     */ 
     TableRow separator = new TableRow(this); 
     View line = new View(this); 
     TableRow.LayoutParams separatorLayoutParams = new TableRow.LayoutParams(400, 1); 
     separatorLayoutParams.setMargins(100, 0, 0, 0); 
     line.setBackgroundColor(Color.BLUE); 
     separator.addView(line, separatorLayoutParams); 

     // add row to table 
     table.addView(row); 
     // add a separator 
     table.addView(separator); 
    } 
Смежные вопросы