2015-05-08 2 views
0

У меня есть файл макета с именем строка, которая в основном обертка для того, как я хочу, чтобы моя строка выглядетьПрограммным размещения макета в виде таблицы

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TableRow 
     android:id="@+id/tableRow" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent"> 

     <TextView 
      android:id="@+id/oid" 
      android:layout_width="0dp" 
      android:layout_weight="1" android:background="#dcdcdc" 
      android:textColor="#000000" 
      android:padding="5dip" 

      /> 
     <TextView 
      android:id="@+id/value" 
      android:layout_width="0dp" 
      android:layout_weight="1" android:background="#d3d3d3" 
      android:textColor="#000000" 
      android:padding="5dip" 

      /> 
     <TextView 
      android:id="@+id/type" 
      android:layout_width="0dp" 
      android:layout_weight="1" android:background="#dcdcdc" 
      android:textColor="#000000" 
      android:padding="5dip" 

      /> 
    </TableRow> 
</LinearLayout> 

Теперь идентификатор, чтобы иметь возможность создать ряд используя этот макет и поместите его в мою таблицу, которая определена в макете фрагмента. Это мой текущий код для создания строки (он не использует файл макета строки) и добавления его в таблицу, но строка не отформатирована, как мне бы хотелось.

TableLayout varbindTable = (TableLayout) view2.findViewById(R.id.tableLayout1); 
TableRow row = new TableRow(getActivity()); 

row.setLayoutParams(new TableRow.LayoutParams(
     TableRow.LayoutParams.MATCH_PARENT, 
     TableRow.LayoutParams.MATCH_PARENT)); 
varbindTable.addView(row); 
TextView name = new TextView(getActivity()); 

name.setText(((EditText)view.findViewById(R.id.oid)).getText().toString()); 
name.setTextColor(Color.BLACK); 
name.setLayoutParams(new TableRow.LayoutParams(
     0, 
     TableRow.LayoutParams.MATCH_PARENT)); 
TextView value = new TextView(getActivity()); 

value.setText(((EditText)view.findViewById(R.id.value)).getText().toString()); 
value.setTextColor(Color.BLACK); 
value.setLayoutParams(new TableRow.LayoutParams(
     0, 
     TableRow.LayoutParams.MATCH_PARENT)); 
TextView type = new TextView(getActivity()); 

type.setText(((Spinner)view.findViewById(R.id.data_type_spinner)).getSelectedItem().toString()); 
type.setTextColor(Color.BLACK); 
type.setLayoutParams(new TableRow.LayoutParams(
     0, 
     TableRow.LayoutParams.MATCH_PARENT)); 

row.addView(name); 
row.addView(value); 
row.addView(type); 

ответ

0

Ну, на первый взгляд проблема выглядит так, как ваши настройки в двух примерах различны. В xml вы используете layout_width = "0dp" и layout_weight = "1". Однако в коде вы используете MATCH_PARENT.

Ближайший пример, который я смог найти: How do you setLayoutParams() for an ImageView?

+0

Я читаю его, и я уже делаю то, что подсказывает ответ. Часть кода частично неактуальна, потому что я хочу добавить макет строки в таблицу и не строить, а затем добавить строки в код. (возможно, с помощью адаптера?) Если, конечно, я не смог достичь макета через setLayoutParams. –

+0

В итоге я получил правильную компоновку, добавив вес в setLayoutParams –

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