活动与透明背景

时间:2013-07-09 07:32:46

标签: android android-activity

我想要实现的是具有类似对话框的透明度的活动,其中RelativeLayout内容的可见性为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"

到LinearLayout。现在背景是我想要的透明,但RelativeLayout里面的TextViews也是透明的..如何改变它?

6 个答案:

答案 0 :(得分:9)

尝试设置

    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>

答案 1 :(得分:5)

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

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

android:

取自here

答案 2 :(得分:5)

创建样式

<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>

答案 3 :(得分:3)

  

我添加了android:background =&#34;#c0000000&#34;到LinearLayout。现在背景   我想要透明,但内部也是TextViews   RelativeLayout也是透明的..如何改变呢?

RelativeLayout元素添加纯色背景。 这样,RelativeLayout将具有纯色背景,只有边距将是透明的。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

如果您的活动需要从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>

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

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

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

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