1

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

在此处输入图像描述

这是一个在中心有一个 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>
4

2 回答 2

1

您是否尝试过专门为这种设备创建特殊布局?前段时间我遇到了类似的问题,通过使用此设备的屏幕规格创建新布局来解决。

发生这种情况的原因是,当您创建默认布局时,它被创建用于中等屏幕密度。当您在更高密度的屏幕上运行应用程序时,Android 会尝试将布局填充到屏幕尺寸和密度。如果 Android 知道背景与屏幕密度不匹配,它会尝试使用其他方式填充背景。众所周知,为您要支持的每个密度创建布局是一种很好的做法。IE,正常(mdpi),高(hdpi)和低(ldpi)。

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

资源是那些没有用配置限定符标记的。例如drawable/中的资源就是默认的drawable资源。系统假定默认资源是为基线屏幕尺寸和密度设计的,即正常屏幕尺寸和中等密度。因此,系统会酌情为高密度屏幕向上缩放默认密度资源,为低密度屏幕向下缩放。但是,当系统在寻找特定密度的资源时,在特定密度的目录中没有找到它,它不会总是使用默认资源。系统可以改为使用其他特定于密度的资源之一,以便在缩放时提供更好的结果。例如,在寻找低密度资源并且它不可用时,系统更喜欢缩小资源的高密度版本,因为与缩放中等密度资源相比,系统可以轻松地将高密度资源缩小到低密度 0.5 倍,而且工件更少0.75 倍。...”(developer.android.com/guide/practices/screens_support.html)

要深入了解Android如何选择资源可以查看这个主题:Android如何找到最佳匹配资源

希望这有帮助。

于 2013-01-08T17:55:36.970 回答
1

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

于 2014-01-23T15:03:43.890 回答