Android:透明背景自动替换为随机图像

时间:2013-01-08 17:05:55

标签: android android-layout

我正在尝试我的应用程序的奇怪行为:所有透明背景都被随机图像替换。 这是一个例子(抱歉大尺寸):

enter image description here

这是一个活动,其中心(透明背景)的RelativeLayout包含一个listView(每个单元格都有透明背景)。 您可以看到,这个巨大的注销图像取代了所有透明背景。此图像以完全不同的布局使用,并且在活动布局的xml文件中根本不显示。 这个问题仅存在(据我所知)与三星Galaxy Note(我讨厌我的全身和心脏),并且它在我使用的每个其他设备和模拟器中都可以顺利和精细地工作。 我已经清理了项目,重新安装了应用程序以及我所知道的所有其他故障排除初步实践。

有没有人知道发生这种情况的原因?

这是xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/io_guido_background" >

    <!-- header -->

    <RelativeLayout
        android:id="@+id/headerlayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/pezzo_bar"
        android:gravity="top" >

        <ImageView
            android:id="@+id/header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:scaleType="fitStart"
            android:src="@drawable/logo_bar" />

        <TextView
            android:id="@+id/titolo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="10dp"
            android:gravity="left|top"
            android:text="Archivio"
            android:textColor="@color/white"
            android:textSize="16dp"
            android:textStyle="bold" />
    </RelativeLayout>

    <!-- body -->

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/headerlayout" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="480dp"
            android:layout_centerInParent="true"
            android:orientation="vertical" >

            <!-- box date -->

            <RelativeLayout
                android:id="@+id/sceltadate"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:background="@drawable/io_guido_rect_2" >

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="4dp"
                    android:background="@drawable/io_guido_periodo"
                    android:scaleType="fitStart" />

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="50dp"
                    android:orientation="horizontal" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Da: "
                        android:textColor="@color/black" />

                    <Button
                        android:id="@+id/dabtn"
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:background="@drawable/textedit_state"
                        android:onClick="setData" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="40dp"
                        android:text="A: "
                        android:textColor="@color/black" />

                    <Button
                        android:id="@+id/abtn"
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:background="@drawable/textedit_state"
                        android:onClick="setData" />
                </LinearLayout>
            </RelativeLayout>
            <!--  -->


            <!-- body lista -->

            <RelativeLayout
                android:id="@+id/body"
                android:layout_width="fill_parent"
                android:layout_height="338dp"
                android:layout_above="@+id/legenda"
                android:layout_below="@+id/sceltadate"
                android:layout_margin="10dp" >

                <RelativeLayout
                    android:id="@+id/subbody"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_above="@+id/backgroung"
                    android:background="#f3f3f3" >
                </RelativeLayout>

                <ImageView
                    android:id="@+id/backgroung"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:background="@drawable/io_guido_rect_3_new" />

                <!-- logo

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentRight="true"
                    android:layout_marginBottom="30dp"
                    android:layout_marginRight="10dp"
                    android:scaleType="fitStart"
                    android:src="@drawable/logo_trasparente" />
                 fine logo -->


                <!-- lista -->

                <LinearLayout
                    android:id="@+id/layoutlista"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <ListView
                        android:id="@id/android:list"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_marginBottom="10dp"
                        android:background="@color/transparent"
                        android:cacheColorHint="@color/transparent" >
                    </ListView>
                </LinearLayout>

                <!-- sfondoTop -->
            </RelativeLayout>

            <!-- fine bodyLista -->


            <!-- body legenda -->

            <LinearLayout
                android:id="@+id/legenda"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="15dp"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >

                <!-- Prenotata -->

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:paddingRight="10dp" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/ready" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Prenotata"
                        android:textColor="@color/black" />
                </LinearLayout>

                <!-- In corsa -->

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/pronta" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="In corsa"
                        android:textColor="@color/black" />
                </LinearLayout>

                <!-- terminata -->

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:paddingLeft="10dp" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/ok" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Terminata"
                        android:textColor="@color/black" />
                </LinearLayout>

                <!-- Annullata -->

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:paddingLeft="10dp" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/x" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Annullata"
                        android:textColor="@color/black" />
                </LinearLayout>
            </LinearLayout>
            <!-- fine body legenda -->

        </RelativeLayout>
    </RelativeLayout>
    <!-- fine body -->

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

您是否尝试过特别为此类设备创建特殊布局? 前段时间我遇到了类似的问题,并通过创建具有此设备屏幕规格的新布局解决了这个问题。

发生这种情况的原因是,当您创建默认布局时,会创建它以使用中等屏幕密度。 当您在更高密度的屏幕上运行应用程序时,Android会尝试将布局填充到屏幕大小和密度。 如果Android了解背景将无法正确适应屏幕密度,它将尝试使用其他方式填充背景。 被称为良好实践为您想要支持的每个密度创建布局。 IE,正常(mdpi),高(hdpi)和低(ldpi)。

在运行时,系统确保在当前屏幕上以最佳方式显示任何给定资源的以下过程:

“......系统使用适当的替代资源 根据当前屏幕的大小和密度,系统使用应用程序中提供的任何特定大小和密度的资源。例如,如果设备具有高密度屏幕并且应用程序请求可绘制资源,则系统会查找与设备配置最匹配的可绘制资源目录。根据可用的其他备用资源,具有hdpi限定符的资源目录(例如drawable-hdpi /)可能是最佳匹配,因此系统使用此目录中的可绘制资源。 如果没有可用的匹配资源,系统将使用默认资源并根据需要向上或向下扩展以匹配当前屏幕大小和密度 “默认”资源是未使用配置限定符标记的资源。例如,drawable /中的资源是默认的可绘制资源。系统假定默认资源是针对基线屏幕尺寸和密度设计的,这是正常的屏幕尺寸和中等密度。因此,系统会根据需要为高密度屏幕缩放默认密度资源,为低密度屏幕缩小默认密度资源。 但是,当系统查找特定于密度的资源但未在密度特定的目录中找到它时,它将不会始终使用默认资源。系统可以改为使用其他密度特定资源中的一个,以便在缩放时提供更好的结果。例如,当寻找低密度资源并且它不可用时,系统倾向于缩小资源的高密度版本,因为系统可以轻松地将高密度资源缩放到低密度资源。与将中密度资源缩放0.75倍相比,因子为0.5,伪影更少。 ...“(developer.android.com/guide/practices/screens_support.html)

要深入了解Android如何选择资源,您可以查看此主题:How Android Finds the Best-matching Resource

希望得到这个帮助。

答案 1 :(得分:1)

我遇到了同样的问题。能够通过将android:background="@color/transparent"替换为android:background="@null"来解决此问题。它可以是三星平板电脑特有的东西(在Galaxy标签上看到它)。