Форматирование новой TableRow (программно)

В XML я определил TableLayout с помощью TableRow (заголовок таблицы). Каждая вторая строка будет добавлена ​​программно. Проблема: я не могу привести новые строки в соответствие с одним из XML

  1. 3 TextView Array, 1 TableRow Array
  2. Цикл заполнения этих массивов с помощью TextViews и TableRows
  3. Все они переданы методу setTableRowParams
  4. Настройка текста для TextViews
  5. Добавление всех строк в TableLayout

    driversNames = new TextView[DRIVERSAMOUNT];
    driversDriven = new TextView[DRIVERSAMOUNT];
    driversRemaining = new TextView[DRIVERSAMOUNT];
    driversRows = new TableRow[DRIVERSAMOUNT];
    
    for (int i = 0; i < DRIVERSAMOUNT; i++) {
    
        driversNames[i] = new TextView(this);
        driversDriven[i] = new TextView(this);
        driversRemaining[i] = new TextView(this);
    
        driversRows[i] = new TableRow(this);
        setTableRowParams(driversRows[i]);
    
        driversNames[i].setText(driversArray[i].getName());
        driversDriven[i].setText("" + driversArray[i].getTimeDriven());
        driversRemaining[i].setText("" + driversArray[i].getTimeRemaining());
    
    
    
        driversRows[i].addView(driversNames[i]);
        driversRows[i].addView(driversDriven[i]);
        driversRows[i].addView(driversRemaining[i]);
    
        tableLayout.addView(driversRows[i]);
    
    }
    

    setTableRowParams () Метод

    TableLayout.LayoutParams tableRowParams =
            new TableLayout.LayoutParams
                    (TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
    tableRowParams.setMargins(10, 10, 10, 10);
    
    tr.setLayoutParams(tableRowParams);
    
        <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_driver"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="20dp"
            android:elevation="10dp"
            card_view:cardCornerRadius="2dp">
    
            <TableLayout
                android:id="@+id/tableDrivers"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                <TableRow
                    android:id="@+id/driversRow1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="10dp">
    
                    <TextView
                        android:id="@+id/tVDriversTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_span="3"
                        android:layout_weight="1"
                        android:text="@string/card_drivers"
                        android:textAppearance="?android:attr/textAppearanceLarge" />
    
                </TableRow>
    
                <TableRow
                    android:id="@+id/driversRow2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="10dp">
    
                    <TextView
                        android:id="@+id/tVDriversName"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/drivers"
                        android:textAppearance="?android:attr/textAppearanceMedium" />
    
                    <TextView
                        android:id="@+id/tVDriversDriven"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/timeDriven"
                        android:textAppearance="?android:attr/textAppearanceMedium" />
    
                    <TextView
                        android:id="@+id/tVDriversRemaining"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/timeLeft"
                        android:textAppearance="?android:attr/textAppearanceMedium" />
    
                </TableRow>
    
                <!-- THE VALUES ARE ADDED PROGRAMATICALLY -->
    
            </TableLayout>
    
        </android.support.v7.widget.CardView>
    

Это результат. Как вы можете видеть строки Драйвер 1-4 не совпадают с заголовком. Извините за иностранный язык;-)

Подскажите, пожалуйста, где моя ошибка?

1 ответ

Вы пытались установить для атрибута android:layout_width значение 0dp(и, конечно, оставить для android:layout_weight значение 1) для дочерних представлений?

Убедитесь, что все дети начались с одинаковой ширины (android:layout_width="0dp" на них обоих)

Другие вопросы по тегам