РЕДАКТИРОВАТЬ: кажется, что проблема в том, что создание нового 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, который хорошо отображается для первого изображения.