Как мне создать прозрачную активность на Android? - PullRequest
854 голосов
/ 01 февраля 2010

Я хочу создать прозрачное действие поверх другого действия.

Как мне этого добиться?

Ответы [ 19 ]

6 голосов
/ 12 июня 2013

Самый простой способ, который я нашел, это установить тему действия в AndroidManifest на android:theme="@android:style/Theme.Holo.Dialog".

Затем в методе onCreate упражнения вызовите getWindow().setBackgroundDrawable(new ColorDrawable(0));.

5 голосов
/ 25 апреля 2017

Для диалоговой деятельности я использую это:

getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);

Но вам также нужно установить основной вид в упражнении на невидимый. В противном случае фон будет невидимым, а все виды в нем будут видны.

3 голосов
/ 26 сентября 2018

в дополнение к ответам выше:

, чтобы избежать сбоя Android Oreo при активности

<style name="AppTheme.Transparent" parent="@style/Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
</style>

<activity
     android:name="xActivity"
     android:theme="@style/AppTheme.Transparent" />
3 голосов
/ 02 сентября 2013

Я просто сделал две вещи, и это сделало мою деятельность прозрачной. Они ниже.

  1. В файле манифеста я только что добавил следующий код в тег активность .

    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
    
  2. И я просто установил фон основного макета для этого действия как « # 80000000 ». Как

    android:background="#80000000"
    

У меня отлично работает.

2 голосов
/ 06 января 2018

Есть два способа:

  1. Использование Theme.NoDisplay
  2. Использование Theme.Translucent.NoTitleBar

Использование Theme.NoDisplay все равно будет работать ... но только на старых устройствах Android. На Android 6.0 и выше, использование Theme.NoDisplay без вызова finish() в onCreate() (or, technically, before onResume()) вызовет сбой вашего приложения. Вот почему рекомендация должна использовать Theme.Translucent.NoTitleBar, который не страдает от этого ограничения . ”

2 голосов
/ 25 июля 2013

Назначьте ей полупрозрачную тему

android:theme="@android:style/Theme.Translucent.NoTitleBar"
1 голос
/ 11 декабря 2015

Примечание 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>
0 голосов
/ 26 ноября 2018

Если вы используете AppCompatActivity, добавьте это в styles.xml

<style name="TransparentCompat" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <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>
</style>

В manifest файле вы можете добавить эту тему в тег активности вот так

android:theme="@style/TransparentCompat"

для более подробной информации прочитайте статью

0 голосов
/ 16 августа 2016

Просто добавьте следующую строку в тег активности в файле манифеста, который должен выглядеть прозрачным.

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