Android Lollipop не показывает андроид: фоновое изображение

Я разработал экран, где я использовал изображение в формате JPEG в качестве фона макета. Полный экран пользовательского интерфейса отображается правильно на Android 8 (GingerBread) на Android 19 ( Kitkat). Фон макета не отображается в Android 20 + ( Lollipop)

Я использую библиотеку совместимости приложений.

Смотрите снимок экрана ниже

Эмулятор Android 8

Устройство Kitkat

Устройство Lollipop

Решения уже пробовали

  • Создайте еще одну папку mipmap и скопируйте там же изображение и попытайтесь получить к ней доступ с помощью @mipmap\image_background. Ничего не изменилось.

Макет XML

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/mainBody" android:layout_width="fill_parent" android:layout_height="fill_parent">
<!-- android:background="@drawable/login_bg" -->
 <view android:id="@+id/vwStruts" android:layout_width="0dp" android:layout_height="0dp" android:layout_centerinparent="true">
 <tablelayout android:id="@+id/tblLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerinparent="true" android:layout_margin="5dp" android:padding="5dp">
 <tablerow android:id="@+id/tbrUserId" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="10dp" android:gravity="center">
 <edittext android:id="@+id/edtUserId" style="@style/EditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:layout_marginleft="5dp" android:layout_marginright="5dp" android:hint="@string/hintEmpId">
 <requestfocus>
 </requestfocus></edittext>
 </tablerow>
 <tablerow android:id="@+id/tbrPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="10dp">
 <edittext android:id="@+id/edtPassword" style="@style/EditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginleft="5dp" android:layout_marginright="5dp" android:ems="10" android:hint="@string/hintPassword" android:inputtype="textPassword">
 </edittext></tablerow>
 <tablerow android:id="@+id/tbrLoginAndClear" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center">
 </tablerow></tablelayout></view></relativelayout><button android:id="@+id/btnLogin" style="@style/LoginButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:minheight="40dp" android:layout_weight="1" android:layout_marginleft="5dp" android:layout_marginright="5dp" android:text="@string/login"><code>
 
 
 </code>
<p> <span> styles.xml, нет никакой папки для значений-v21</span></p>
<pre class="prettyprint linenums"> <resources xmlns:android="http://schemas.android.com/apk/res/android">
 <!--
 Base application theme, dependent on API level. This theme is replaced
 by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
 -->
 
 <!-- Application theme. -->
 
</resources>

кнопка входа в систему

<!--?xml version="1.0" encoding="utf-8"?-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- On Pressed state -->
 <item android:state_pressed="true">
 <shape>
 <solid android:color="@color/btn_login_on_press"> 
 </solid></shape>
 </item>
 <!-- enabled true Not pressed, normal state -->
 <item android:state_pressed="false" android:state_enabled="true">
 <shape>
 <solid android:color="@color/btn_login_normal"> 
 </solid></shape>
 </item>
</selector>

РЕДАКТИРОВАТЬ 1: Добавлены стили Styles.xml и кнопок. РЕДАКТИРОВАТЬ 2: Использовать библиотеку поддержки

5 ответов

После долгого испытания и испытаний я наконец понял... нет ничего плохого в настройках кода или xml или стиля или темы.

Маленькая игла в стеке проблемы была "Предотвращение слишком большого растрового изображения, которое будет загружено в текстуру Android"

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

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

Надеюсь, это поможет любому, кто не может загрузить фон.

Не стесняйтесь запрашивать больше!


Используйте эту тему для своей деятельности в manifest.xml

и для выше API 21 используйте эту папку для создания в res/values-v21 и используйте эту ниже тему


Цель папки mipmap - предоставить возможность запуска средства Android для выбора другого разрешения. Таким образом, верните изображение в папку с рисунком. лучшее место для размещения изображения на вашем фоне - это this. Основная идея - установить фоновый слой в качестве ресурса окна для активности входа.


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


Быстрое исправление для этого в дополнение к программному изменению размера растрового изображения - это просто изменить внешний вид растрового изображения и поместить его в папку v21 res и установить его на задний план. Если нет предпочтений в отношении того, как изображение должно выглядеть как на всех устройствах, то просто поместить его обратно в общую папку с возможностью рисования все равно придется работать. Ручное изменение размера растрового изображения во время выполнения может быть дорогостоящим, если вы случайно не измените фоновое изображение.

licensed under cc by-sa 3.0 with attribution.