Android: программно создавая две колонки в таблице - PullRequest
2 голосов
/ 06 декабря 2011
showtimeTable = new TableLayout(this);
         showtimeTable.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

         for(int i=0;i<object.dateList.size();i++){
              /* Create a new row to be added. */
              TableRow tr = new TableRow(this);
              tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                   /* Create testview to be the row-content. */
              mytext = new TextView(this);
             mytext.setText(object.dateList.get(i).getTextDate());
             mytext.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
             mytext.setTextAppearance(this, R.style.detaileventDate);
                   tr.addView(mytext);



                   time = new TextView(this);
                   time.setText(object.dateList.get(i).getTime());
                   time.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
                   time.setTextAppearance(this, R.style.detaileventTime);
                    tr.addView(time);
         /* Add row to TableLayout. */
         showtimeTable.addView(tr,new TableLayout.LayoutParams(
                   LayoutParams.FILL_PARENT,
                   LayoutParams.WRAP_CONTENT));
         }


         layout.addView(showtimeTable);

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

Я пытался изменить поля в соответствующих стилях, но это не влияет на это.

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Я думаю, вы должны использовать здесь отступы. Это сделает заполнение текстового представления внутри строки таблицы. Я попытался сделать это с вашим кодом и просто добавил несколько тестовых строк:

mytext.setPadding(20, 3, 20, 3);
time.setPadding(20, 3, 20, 3);

Работало нормально. Кроме того, вы можете использовать «Гравитацию» для ваших целей. Смотрите и пример здесь: http://developer.android.com/resources/tutorials/views/hello-tablelayout.html

0 голосов
/ 15 мая 2014

Вы можете установить параметр веса макета для строки таблицы. Это устроит детей соответственно. mytext.setLayoutParams (новый TableRow.LayoutParams (TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));

Последний параметр - вес макета

0 голосов
/ 19 сентября 2013

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

В следующем коде будет указан размер столбца в зависимости от указанного значения colSpan.

int COL_COUNT=2;
int mScreenWidthInDp = getScreenWidthInDip(activityContext);

private View getColumnItem(String colText, int colSpan) {

        View view = mActivity.getLayoutInflater().inflate(R.layout.table_column_view, null);
        TextView textView = (TextView) view.findViewById(R.id.tablet_title);



        textView.setText(colText);
        int columnWidth = (mScreenWidthInDp / COL_COUNT) * span;
        TableRow.LayoutParams params = new TableRow.LayoutParams(columnWidth, ViewGroup.LayoutParams.WRAP_CONTENT, 1);
        params.span = colSpan;
        view.setLayoutParams(params);
        return view;
    }


    public static int getScreenWidthInDip(Activity context) {
        if (mScreenWidthInDp == 0) {
            WindowManager wm = context.getWindowManager();
            DisplayMetrics dm = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(dm);
            int screenWidth_in_pixel = dm.widthPixels;
            float screenWidth_in_dip = screenWidth_in_pixel / dm.density;
            mScreenWidthInDp = (int) screenWidth_in_dip;
        }
        return mScreenWidthInDp;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...