Добавление ImageView в TableRow не отображается - PullRequest
0 голосов
/ 28 ноября 2018

РЕДАКТИРОВАТЬ: кажется, что проблема в том, что создание нового ImageView программно и предоставление стиля в конструкторе просто не работает, во многом как то, что описано здесь .Добавление всех отдельных атрибутов стиля программно решает проблему, но если кто-то найдет более чистое решение, оно все равно будет высоко оценено.

Оригинальный вопрос

Как и многиедругие вопросы на этом сайте, я пытаюсь добавлять изображения в TableLayout программно.Первое изображение в таблице уже включено в XML-файл задания и отображается хорошо.Я хочу, чтобы все новые изображения имели одинаковый стиль, но когда я пытаюсь добавить их через код, они просто не отображаются.Я попробовал несколько вариантов кода, но ни один из них, похоже, не работает.Это соответствующая часть текущей версии:

    TableLayout picturesTable = findViewById(R.id.pictures_table);
    currentPicture.setImageURI(uri);
    TableRow lastRow = (TableRow) picturesTable.
            getChildAt(picturesTable.getChildCount() - 1);
    ImageView newPic = new ImageView(this, null, R.style.UploadPicture);
    lastRow.addView(newPic);

Соответствующий стиль:

<style name="UploadPicture">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:contentDescription">@string/empty_post_pic_description</item>
    <item name="android:gravity">center_horizontal</item>
    <item name="android:onClick">open_file_search</item>
    <item name="android:layout_weight">1</item>
    <item name="srcCompat">@drawable/pic_upload_plus</item>
</style>

TableLayout:

<TableLayout
    android:id="@+id/pictures_table"
    android:layout_width="330dp"
    android:layout_height="0dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="100dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.51"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/title">

    <TableRow
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/pic_1"
            style="@style/UploadPicture" />
    </TableRow>
</TableLayout>

Поскольку мой стиль содержит значениядля layout_width, layout_height и layout_weight я действительно не уверен, почему первое изображение отображается хорошо, а изображения, добавленные с помощью кода, - нет.

@ drawable / pic_upload_plus - это корректный png, который хорошо отображается для первого изображения.

...