Android: Drawable не отображается - PullRequest
       0

Android: Drawable не отображается

8 голосов
/ 19 сентября 2011

У меня есть довольно простой XML-файл, в котором есть кнопка с изображением.Изображение хорошо отображается в XML-конструкторе Graphical Layout, хорошо отображается при запуске сборки разработки, но как только я создаю подписанный файл apk и запускаю его, изображение больше не отображается.Это просто пустая кнопка.Я не могу придумать причину почему, какие-либо идеиXML-файл выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
    android:id="@+id/navigation_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:text="TextView"
    android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>

<SeekBar
    android:id="@+id/navigation_seekbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:padding="5dp" >
</SeekBar>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <ImageButton
        android:id="@+id/part_select_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/chapter_select" >
    </ImageButton>

    <Button
        android:id="@+id/navigation_ok_button"
        android:layout_width="75dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="@string/ok" >
    </Button>

    <Button
        android:id="@+id/navigation_cancel_button"
        android:layout_width="75dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="@string/cancel" >
    </Button>
</LinearLayout>

Изображение @drawable/chapter_select представляет собой довольно небольшой (41 * 41) PNG-файл, который находится в папке res / drawable.

Ответы [ 7 ]

13 голосов
/ 20 сентября 2011

Похоже, что это ошибка с Android, где иногда первое изображение в папке Drawable не отображается. Добавил фиктивное изображение с именем aaaa.png в папку для рисования и проблема была решена. Нашел ответ здесь: ImageButton не отображает конкретный чертеж

5 голосов
/ 11 апреля 2017

Возникла такая же проблема и решена путем удаления всех специальных символов.В моем случае это было тире '-' в имени файла:

background-720.png => background.png.

2 голосов
/ 19 сентября 2011

попробуйте поместить изображение в папки drawable-hdpi и drawable-mdpi зависит от того, на каком устройстве вы запускаете ваше приложение, в этих папках ищется образ ...

Но добавление в режиме рисования означает, что изображение должно быть доступно везде, но иногда (в зависимости от настроек манифеста) это не может быть правдой, я имею в виду, что вы можете выключить режим совместимости.

также вы можете попробовать динамически во время выполнения, чтобы установить изображение для вида

iv.setImageResource(R.drawable.somethig);
0 голосов
/ 04 апреля 2019

Одной из причин является

Если вы используете Vector файл для рисования влево или вправо, тогда вы должны использовать.

android.support.v7.widget.AppCompatButton

вместо

Кнопка

Простой просмотр как Button,Textview не поддерживает Vector файл как Drawable left right в моем случае

0 голосов
/ 20 марта 2019

Хорошо! в моем случае установка MinifyEnabled false и shrinkResources false теперь работает нормально.

я получал изображение из прорисовки. в отладочной версии он работал довольно хорошо, но после релизной версии apk он иногда показывал пустой ImageView.

minifyEnabled false shrinkResources true

**

см. Скриншоты

**

**Before****After**

Надеюсь, это может кому-нибудь помочь.

0 голосов
/ 29 марта 2018

Проверьте размер изображения.Если вы используете неоправданно большой ресурс при фактическом развертывании, он может просто не отображаться, несмотря на то, что в конструкторе он выглядит правильно.

0 голосов
/ 15 сентября 2017

Моя ситуация была странной. Все было правильно, пока я не интегрировал отчет о сбоях FireBase в мое приложение.

Я только что добавил компиляцию 'com.google.firebase:firebase-crash:11.0.1' & DrawableLeft исчез . Когда я прошел через xml, заметил предупреждение (Подкладка ниже).

Так добавлено android:drawableStart & проблема исчезла.

Тем не менее, мне интересно, какое отношение FireBase Crash сообщает к тому же.

Использование левого / правого вместо начального / конечного атрибутов Использование Gravity # LEFT и Gravity # RIGHT могут привести к проблемам, когда макет отображается в локали, где текст течет справа налево. Используйте Gravity # START и Gravity # END вместо.

Аналогичным образом, в атрибутах XML gravity и layout_gravity используйте start а не слева. Для атрибутов XML, таких как paddingLeft и layout_marginLeft, используйте paddingStart и layout_marginStart.

ПРИМЕЧАНИЕ: если ваш minSdkVersion меньше 17, вы должны добавить оба старые левые / правые атрибуты, а также новые начальные / правые атрибуты. На старых платформах, где RTL не поддерживается и запуск / право атрибуты неизвестны и поэтому игнорируются, вам нужно старшее левый / правый атрибут.

Существует отдельная проверка lint, которая улавливает этот тип ошибки. (Примечание: для Gravity # LEFT и Gravity # START вы можете использовать эти константы даже при таргетинге на старые платформы, потому что начальная битовая маска является суперсет левой битовой маски. Следовательно, вы можете использовать gravity = "start" а не гравитация = "левый | старт".)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...