Программная вставка TableRows в TableLayout - TextView внутри TableRow не будет отображаться

StackOverflow https://stackoverflow.com//questions/21060166

Вопрос

Хорошо, итак, я пытаюсь вставить TableRows в TableLayout программно при каждом нажатии кнопки.Каждая из этих строк содержит TextView установите значение в некоторую строку.Моя проблема в том, что, хотя TableRow успешно вставлен текст в TextView, который сам находится внутри TableRow не появится.

Вот что я делаю:

    //prepare TextView to put inside a TableRow
    TextView text = new TextView(MyClass.this);
    text.setText(someString);
    text.setTextSize(15);
    text.setTextColor(Color.parseColor("#FF9900"));
    text.setLayoutParams(new LayoutParams
            (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


    //Prepare TableRow to be inserted
    TableRow row = new TableRow(MyClass.this);
    row.addView(text);
    row.setPadding(4,4,4,4);
    row.setGravity(Gravity.CENTER);
    row.setLayoutParams(new LayoutParams
            (LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

    //add row to the table
    someTableLayout.addView(row);

Результат:Строка вставлена, но я не вижу текста (я знаю, что строка вставлена, так как я вижу разделители между каждой строкой).Я предполагаю, что это как-то связано с LayoutParams?Вероятно, я упускаю из виду что-то очень глупое...но я понятия не имею...

Скриншот после того, как я нажму Roll который должен вставить строку со строкой / TextView:enter image description here

Текстовое представление "Начать с прокрутки" - это первая строка, которую я ввел в XML-файл.Он отображается нормально, но строки, вставленные программно, этого не делают

Это было полезно?

Решение

Во-первых, это то, что у вас есть TextView с высотой match_parent и еще tablerow с высотой wrap_content так что сделайте TextView высота также равна wrap_content .

И, во-вторых, назначьте соответствующие параметры компоновки, например:

TextView text = new TextView(MyClass.this);
text.setText(someString);
text.setTextSize(15);
text.setTextColor(Color.parseColor("#FF9900"));
text.setLayoutParams(new TableRow.LayoutParams
        (LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));


//Prepare TableRow to be inserted
TableRow row = new TableRow(MyClass.this);
row.addView(text);
row.setPadding(4,4,4,4);
row.setGravity(Gravity.CENTER);
row.setLayoutParams(new TableLayout.LayoutParams
        (LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

//add row to the table
someTableLayout.addView(row);

Другие советы

Попробуйте это сделать:

text.setLayoutParams(new LayoutParams
            (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


text.setLayoutParams(new LayoutParams
            (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top