TableRow добавляется, но не отображается

1

У меня есть небольшое приложение, которое периодически нуждается в строке таблицы, добавленной в tablelayout. По методу getChildCount() строка добавляется, но она не отображается. Любые предложения будут ценны

    TableLayout tbl = (TableLayout)findViewById(R.id.mytbl);
    TableRow row = new TableRow(this);
    LinearLayout ll = new LinearLayout(this);
    TextView txtView = new TextView(this);


    row.setId(1234);
    row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
    row.setGravity(Gravity.CENTER);
    row.setBackgroundResource(android.R.color.darker_gray);


    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT,1.0f);
    ll.setId(1589);
    ll.setLayoutParams(lp); 
    ll.setOrientation(LinearLayout.VERTICAL);
    ll.setBackgroundResource(R.color.header_background);
    ll.setGravity(Gravity.CENTER);

    String msg = "Sample Text";

    txtView.setId(657);
    txtView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
    txtView.setTextColor(R.color.a_color);
    txtView.setBackgroundResource(R.drawable.border_a);
    txtView.setGravity(Gravity.TOP | Gravity.LEFT);
    txtView.setText(msg);


    ll.addView(txtView);
    row.addView(ll);
    tbl.addView(row,new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));//maybe add this with layout params tl.addView(tr,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

Я пробовал tbl.RequestLayout() и tbl.Invalidate(), но не помогал. Таблица обернута в scrollview, который является моим лучшим предположением о том, где проблема. Я занимался этим несколько часов, поэтому толчок в правильном направлении был бы полезен

    <ScrollView
    android:id="@+id/scrVw_lst"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     >

    <TableLayout
        android:id="@+id/mytbl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:stretchColumns="*">
  • 0
    Не могли бы вы добавить файл макета, где у вас есть родительский ScrollView и TableLayout ?
Теги:
android-layout

1 ответ

2
Лучший ответ

TableLayout ли вы код для добавления строки в TableLayout? Я смоделировал добавление строки одним нажатием Button и я получаю неудобное исключение Divide by 0.

В любом случае, измените LayoutParams Linearlayout на TableRow.LayoutParams (его родителем является TableRow):

    TableRow.LayoutParams lp = new TableRow.LayoutParams(
            TableRow.LayoutParams.FILL_PARENT,
            TableRow.LayoutParams.WRAP_CONTENT, 1.0f);
    ll.setId(1589);
    ll.setLayoutParams(lp)

Кроме того, если это не решит проблему, попробуйте добавить:

android:fillViewport="true"

к тегу ScrollView в макете xml.

  • 0
    Топика! Это работало без реализации fillviewport. Тем не менее, прокрутка еще не сработала, поэтому она может понадобиться после добавления x количества строк. Я получаю ошибку деления на ноль в моем редакторе иногда, когда у меня есть таблица с нулевыми строками, но уходит с небольшим волнением. Большое спасибо, я возился с этим часами

Ещё вопросы

Сообщество Overcoder
Наверх
Меню