【问题标题】:Eclipse/editor shows a transparent View, but when deploying to device - no transparencyEclipse/编辑器显示透明视图,但在部署到设备时 - 不透明
【发布时间】:2013-01-10 21:04:38
【问题描述】:

我正在构建一个具有一定透明度的 UI。我已经设法让不同的按钮和布局变得透明,所以当我想要有点透明的视图开始表现得很奇怪时,我有点惊讶。

在“设计器”中查看布局时,相关视图在 Eclipse 中显示为部分透明。但是当我将它部署到设备(Samsung S2、Android 4)时,那个特定的 View 会变成纯黑色。

解释它是如何构建的有点混乱,但我会尝试。

首先,我希望它看起来如何(透明度,它在 Eclipse 中的外观):

这是部署到设备时的样子(不透明):

第一个问题:

为什么 Eclipse/designer 与部署的版本不同?我已经清理了几次项目,我已经重新启动了 Eclipse 等。

下一步是看看结构是怎样的。

简化版:

[activity_main] --> [LinearLayout] --> [包括“logobar”]

“logobar”看起来像这样:

<?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="50dp"
    android:background="#80000000" >

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <!-- Here is the box, and then the green circle inside the box -->
        <FrameLayout
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:layout_marginLeft="10dp"
            android:background="@drawable/status_background"
            android:padding="0dp" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/bullet_ball_glass_green" />
        </FrameLayout>
        <!-- end of box -->

        <ImageView
            android:id="@+id/logo"
            android:layout_width="220dip"
            android:layout_height="55dip"
            android:background="@android:color/transparent"
            android:paddingLeft="10dp"
            android:src="@drawable/logo_demo" >
        </ImageView>
    </RadioGroup>

</RelativeLayout>

这里是可绘制的“status_background”(分层以获得一些斜角效果):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <stroke
                android:width="1px"
                android:color="#77000000" />

            <corners android:radius="5dp" >
            </corners>
        </shape>
    </item>
    <item
        android:left="1dip"
        android:top="1dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1px"
                android:color="#77ffffff" />

            <corners android:radius="5dp" >
            </corners>
        </shape>
    </item>
    <item
        android:left="1dip"
        android:top="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="#11FFFFFF"/>
            <corners android:radius="5dp" >
            </corners>
        </shape>
    </item>
</layer-list>

那么第二个问题: 谁能告诉我我在这里做错了什么? =) 谢谢

【问题讨论】:

  • 你尝试过做什么?注释掉第一个 ImageView - 仍然是黑色的?不?然后添加 android:background="@android:color/transparent"
  • 设置工具:上下文。然后 exlipse 将您正确的主题来呈现您的布局。 stackoverflow.com/questions/11078487/…
  • @Leonidos 我尝试删除 ImageViews 和其他一些东西,如果我尝试过的所有东西都没有跟踪,现在已经使用了几个小时......
  • @Leonidos tools:context... 然后呢?也指向它...?
  • 好的,我根本无法显示“工具:上下文”...

标签: android layout transparency android-view


【解决方案1】:

像往常一样,在尝试了几个小时后,我去了心爱的 Stack Overflow,并且像以前一样,我在发帖后不久就设法解决了这个问题(好吧,它的一部分)。

所以,我无法解释为什么 Eclipse 显示透明度,但设备没有。奇怪的行为。

但是,如果我将 status_background 更改如下,那么它在两者中都有效:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@android:color/transparent"/>
            <stroke android:width="1px" android:color="#77000000" />
            <corners android:radius="5dp"></corners>
        </shape>
    </item>
    <item android:left="1dip" android:top="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="@android:color/transparent"/>
            <stroke android:width="1px" android:color="#77ffffff" />
            <corners android:radius="5dp" ></corners>
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#11FFFFFF"/>
            <corners android:radius="5dp" ></corners>
        </shape>
    </item>
</layer-list>

【讨论】:

  • 我刚刚发现了同样的事情)只有 Eclipse 中的 API 17 显示透明度。其他 API 级别使用黑色作为形状的默认填充颜色
  • 问题是现在我不能再创建“斜角效果”了……笔画重叠了,所以现在只有一种颜色……
  • 我认为你可以用 9-patch 图像制作它
  • 是的,9 补丁的问题在于...它们是图像 =) 我不想在这类事情上使用图像,这似乎太过分了。我不明白为什么 Android 团队没有添加一个简单的 android:stroke-left="1dp" 或类似的东西,所以你可以定义每个边框颜色、alpha 等......
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
相关资源
最近更新 更多