我想在另一个活动之上创建一个透明的活动。

我怎样才能做到这一点呢?


当前回答

只需将下面一行添加到清单文件中的activity标记中,它需要看起来透明。

android:theme="@android:style/Theme.Translucent"

其他回答

为它指定半透明主题

android:theme="@android:style/Theme.Translucent.NoTitleBar"

我发现的最简单的方法是在AndroidManifest中设置活动的主题为android:theme="@android:style/ theme . holo . dialog "。

然后在活动的onCreate方法中,调用getWindow()。setBackgroundDrawable(新ColorDrawable(0));。

在我的情况下,我必须根据一些条件在java运行时设置主题。所以我在风格上创建了一个主题(类似于其他答案):

<?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">@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>
  </style>
</resources>

然后在Java中,我把它应用到我的活动中:

@Override
protected void onCreate(Bundle savedInstanceState) {

    String email = getIntent().getStringExtra(AppConstants.REGISTER_EMAIL_INTENT_KEY);
    if (email != null && !email.isEmpty()) {
        // We have the valid email ID, no need to take it from user,
        // prepare transparent activity just to perform bg tasks required for login
        setTheme(R.style.Theme_Transparent);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

    } else
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_dummy);
}

记住一个重要的一点:你必须在super.onCreate(savedInstanceState);;之前调用setTheme()函数。我错过了这一点,卡了2个小时,思考为什么我的主题没有在运行时反映出来。

所有这些答案可能会让人困惑,透明活动和无UI活动之间是有区别的。

用这个:

android:主题= " @android:风格/ Theme.Translucent.NoTitleBar”

将使活动透明,但将阻塞UI。

如果你想要一个None的UI活动,请使用这个:

android:主题= " @android:风格/主题。NoDisplay”

注1:在Drawable文件夹中创建test.xml并复制以下代码

   <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke android:width="2dp" />

    <gradient
        android:angle="90"
        android:endColor="#29000000"
        android:startColor="#29000000" />

    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />

</shape>

//注:角和形状按您的要求来定。

//注释2:创建xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/test"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.09"
            android:gravity="center"
         android:background="@drawable/transperent_shape"
            android:orientation="vertical" >
     </LinearLayout>
    </LinearLayout>