2016-05-05 2 views
0

В следующем примере показан простой способ сделать активность прозрачной для Android.Как создать прозрачный макет на Android Android 6.0 (Marshmallow)?

[Ссылка: http://www.coderzheaven.com/2011/07/20/how-to-create-a-transparent-activity-in-android/]

Моя активность:

public class TranslucentActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

Теперь главный файл макета main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    android:textColor="@drawable/red" 
    android:textStyle="bold" 
    /> 
<Button 
    android:text="This is Translucent Activity Demo From CoderzHeaven" 
    android:id="@+id/Button01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@drawable/red" 
    android:textStyle="bold"> 
</Button> 
</LinearLayout> 

ОК, теперь вот стиль, который должен чтобы сделать деятельность прозрачной. Создайте файл с именем style.xml внутри папки res/values и скопировать этот код в нем:

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

Теперь, когда следует применять эту тему? Он применяется в AndroidManifest.xml

Этот файл показан ниже.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="pack.coderzheaven" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".TranslucentActivity" 
        android:theme="@style/Theme.Transparent" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

Проверьте эту строку в манифесте, где применяется этот стиль.

андроид: тема =»@ стиль/Theme.Transparent» имя_приложения и разные цвета в strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">TranslucentActivity! From Coderzheaven</string> 
    <string name="app_name">TranslucentActivity</string> 
    <drawable name="white">#ffffff</drawable> 
    <drawable name="black">#000000</drawable> 
    <drawable name="blue">#2554C7</drawable> 
    <drawable name="green">#347C2C</drawable> 
    <drawable name="orange">#ff9900</drawable> 
    <drawable name="pink">#FF00FF</drawable> 
    <drawable name="violet">#a020f0</drawable> 
    <drawable name="grey">#778899</drawable> 
    <drawable name="red">#C11B17</drawable> 
    <drawable name="yellow">#FFFF8C</drawable> 
    <drawable name="PowderBlue">#b0e0e6</drawable> 
    <drawable name="brown">#2F1700</drawable> 
    <drawable name="Hotpink">#7D2252</drawable> 
    <string name="select_Category">Select Category</string> 
    <drawable name="darkgrey">#606060</drawable> 
</resources> 

Выход: Исключение брошено: java.lang.IllegalStateException: Вы должны использовать Тема Theme.AppCompat (или потомок) с этим действием.

Любое предложение? Любое решение? Как я могу это решить ?. Но мое целевое расположение прозрачно.

ответ

1

Я получил решение от

How do I create a transparent Activity on Android?

С помощью библиотеки "AppCompat" или "Android Design Library Поддержка" это немного по-другому:

В styles.xml:

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:background">#33000000</item> <!-- Or any color you need --> 
    <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> 

В AndroidManifest.xml:

<activity> 
    android:name=".WhateverNameOfTheActivityIs" 
    android:theme="@style/Theme.AppCompat.Translucent" 
    ... 
</activity> 
1

Просто измените родительскую тему для стиля Theme.Transparent к Theme.AppCompat

0

Продлить вашу деятельность с AppCompatActivity

public class TranslucentActivity extends AppCompatActivity 
0

Изменить вашу расширенную активность в AppCompatActivity

Смежные вопросы