14

我想要实现的是具有类似于对话框的透明度的活动,以及相对布局内容的 100% 可见性。这是活动的 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dip"
        android:layout_marginLeft="8dip"
        android:layout_marginRight="8dip"
        android:layout_marginTop="50dip">
        (...)
    </RelativeLayout>
</LinearLayout>

这很明显:

<activity
        android:name="com.acentic.rcontrol.activities.MyActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>

现在背景仍然可见,我做错了什么?

--- 编辑:我补充说

android:background="#c0000000"

到线性布局。现在背景是我想要的透明,而且RelativeLayout里面的TextViews也是透明的..如何改变它?

4

6 回答 6

11

尝试设置

    getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

在你的活动中。

您也可以尝试以以下方式执行此操作:

 <style name="AppTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>
于 2013-07-09T07:46:31.190 回答
7

创建样式

<style name="MyTransparentTheme" parent="android:Theme.Dialog">
       <item name="android:windowIsTranslucent">true</item>
       <item name="android:windowBackground">@android:color/transparent</item>
       <item name="android:windowContentOverlay">@null</item>
       <item name="android:windowNoTitle">true</item>
       <item name="android:windowIsFloating">true</item>
       <item name="android:backgroundDimEnabled">false</item>

这很明显:

<activity
            android:name="your package.activity"
            android:theme="@style/MyTransparentTheme">
        </activity>
于 2013-07-09T07:51:01.180 回答
6

在您的文件中添加以下样式res/values/styles.xml(如果没有,请创建它。)这是一个完整的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

(值是我放在文件@color/transparent中的颜色值。Android的更高版本为您定义了透明颜色,因此您可以直接在样式中使用这些版本并跳过color.xml步骤(注意定义中的附加) )#00000000res/values/color.xml@android:color/transparentandroid:

然后将样式应用于您的活动,例如:

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>

取自这里

于 2013-07-09T07:50:21.737 回答
3

我将 android:background="#c0000000" 添加到 LinearLayout。现在背景是我想要的透明,而且RelativeLayout里面的TextViews也是透明的..如何改变它?

RelativeLayout为您的元素添加纯色背景。这样,RelativeLayout将有一个坚实的背景,只有边距是透明的。

于 2013-07-09T07:58:47.173 回答
1

如果您的活动需要从 AppCompatActivity 扩展,您可以为您的活动创建自定义样式

<style name="transparentActivity" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

然后在 Manifest 中更改活动的默认样式

<activity android:name=".MyActivity"
        android:theme="@style/transparentActivity"/>

否则,如果您不需要您的活动从 AppCompatActivity 扩展,只需以这种方式更改清单中活动的主题即可。

<activity android:name=".MyActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
于 2019-11-20T22:35:33.120 回答
0

设置 LinearLayout 透明度后,尝试将其子透明度设置为您想要的值。这应该使它们具有与 LinearLayout 不同的透明度。试试看。

于 2013-07-09T07:50:53.593 回答