Android: Drawable не отображается
у меня есть довольно простой xml-файл, в котором есть кнопка изображения. Изображение отлично отображается в графическом макете xml designer, отлично отображается при запуске сборки разработки, но как только я создаю подписанный файл 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 папка.
5 ответов
похоже, что это ошибка с android, где иногда первое изображение в папке drawable не отображается. Добавлено фиктивное изображение под названием aaaa.png в папку drawable и проблема была решена. Нашел ответ здесь: ImageButton не отображает конкретный drawable
имел ту же проблему и решил ее, удалив все специальные символы. В моем случае это были тире ' - ' в имени файла:
background-720.png => background.png
.
попробуйте поместить изображение в папку drawable-hdpi и drawable-mdpi в зависимости от того , на каком устройстве вы запускаете приложение, изображение ищется в этих папках...
но ввод в drawable означает, что изображение должно быть доступно везде, но что-то (зависит от ваших настроек манифеста) это не может быть правдой, я имею в виду, что вы можете включить режим совместимости.
также вы можете попробовать динамически во время выполнения, чтобы установить изображение в вид
iv.setImageResource(R.drawable.somethig);
моя ситуация была странная.Все было правильно до интеграции FireBase Crash report в мое приложение.
Я только что добавил compile 'com.google.firebase:firebase-crash:11.0.1'
& DrawableLeft исчез .Когда я прошел через xml, заметил предупреждение (в строке ниже).
так android:drawableStart
& проблема ушла.
все еще мне интересно об отношении сообщения о крушении FireBase к тому же.
использование влево/вправо вместо атрибутов начала/конца с помощью Gravity#LEFT и Gravity#RIGHT может привести к проблемам при отображении макета в локали, где текст течет справа налево. Используйте Gravity#START и Гравитация#конец вместо этого.
аналогично, в атрибутах гравитации XML и layout_gravity используйте start а не слева. Для атрибутов XML, таких как paddingLeft и layout_marginLeft, используйте paddingStart и layout_marginStart.
Примечание: Если ваша minSdkVersion меньше 17, вы должны добавить как старые левые / правые атрибуты, а также новые атрибуты start/right. На более старых платформах, где RTL не поддерживается и начало / право атрибуты неизвестны и поэтому игнорируются, вам нужен более старый левый / правый атрибуты.
существует отдельная проверка корпии, которая ловит этот тип ошибки. (Примечание: Для гравитации#LEFT и гравитации#START вы можете использовать эти константы даже при таргетинге на более старые платформы, потому что стартовая битовая маска надмножество левой битовой маски. Поэтому вы можете использовать gravity= " start" а не гравитация="влево" | "пуск".)
проверьте размер изображения. Если вы используете неоправданно большой актив при фактическом развертывании, он может просто не отображаться, несмотря на правильность в конструкторе.