web-dev-qa-db-ja.com

画面全体に表示される半透明のアクティビティ

画面の上部(4)に、別のアクティビティ(1)よりも半透明のアクティビティ(2)を配置したいと思います。

enter image description here

これらのテーマをアクティビティ番号2に割り当ててみました。

<style name="Theme.CustomDialog" parent="Android:style/Theme.Dialog">
    <item name="Android:windowBackground">@Android:color/black</item>
</style>  

<style name="CustomTheme">
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:background">@Android:color/transparent</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:windowNoTitle">true</item>
</style>    

しかし、結果は常に3です。

CustomTheme<item name="Android:windowIsFloating">false</item>を設定すると、結果は2になります。

誰かが私に4を得る方法を教えてもらえますか?ありがとう!

PDATE:これは私のアクティビティ2のレイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" Android:background="#0000">

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" Android:background="#FFFFFF">

        <Button
            Android:id="@+id/button1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Menu" Android:layout_centerHorizontal="true"/>

    </RelativeLayout>

</RelativeLayout>
14
Xavi Gil

最後に、このテーマは画像番号4のような結果を得るために機能しました。

  <style name="Theme.CustomTranslucent" parent="Android:style/Theme.Translucent">
        <item name="Android:backgroundDimEnabled">true</item>
        <item name="Android:backgroundDimAmount">0.5</item>
        <item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
        <item name="Android:background">@Android:color/transparent</item>
 </style>  

私のアクティビティ2のレイアウトでは、set Android:background="@Android:color/transparent"またはそれを機能させるために値をまったく設定しない。

MikeIsraelとVeerの助けに感謝します。

22
Xavi Gil

私は他の解決策を読みましたが、ここに私の解決策があります:

style.xml

<resources>
<style name="mytransparent.windowNoTitle" parent="Android:Theme.Holo.Light">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:background">@Android:color/transparent</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>
<style name="mytransparent.windowTitle" parent="Android:Theme.Holo.Light">
    <item name="Android:background">@Android:color/transparent</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=".LoginActivity"
    Android:theme="@style/mytransparent.windowTitle"
    Android:configChanges="orientation"
    Android:label="@string/title_activity_login"
    Android:screenOrientation="portrait" ></activity>
10
arm

AppCompatActivityを使用する場合は、親として_Theme.AppCompat_を使用する必要があります。そうしないと、アプリケーションがハングしたり、エラー(Java.lang.RuntimeException: Unable to start activity ComponentInfo ... Caused by: Java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.))でクラッシュしたりする可能性があります。

これをあなたのスタイルに入れてください:

_<style name="MyTheme" parent="AppTheme.NoActionBar">
   <item name="Android:windowIsTranslucent">true</item>
   <item name="Android:windowBackground">@Android:color/transparent</item>
   <item name="Android:backgroundDimEnabled">false</item>
   <item name="Android:windowNoTitle">true</item>
   <item name="Android:windowActionBar">false</item>
   <item name="Android:windowFullscreen">false</item>
   <item name="Android:windowContentOverlay">@null</item>
</style>
_

次に、MyThemeをアクティビティマニフェストに追加します:_<activity Android:name=".MyActivity" Android:theme="@style/MyTheme">_

5
Vadim Leb

まず、透明なテーマのアクティビティを行います。

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

マニフェストでのアクティビティに透明なテーマを割り当てます。

    <activity Android:name=".MyActivity"
              Android:label="@string/app_name"
              Android:theme="@style/Theme.Transparent"/>

要件に従ってレイアウトを作成し、アクティビティのコンテンツビューをそのレイアウトに設定します。

次のレイアウトを試してください。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:background="@Android:color/transparent">

    <RelativeLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:background="#FFFFFF"
        Android:layout_alignParentTop="true">

        <Button
            Android:id="@+id/button1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Menu" Android:layout_centerHorizontal="true"/>

    </RelativeLayout>

</RelativeLayout>

お役に立てば幸いです。

4
Veer

Xmlを介してそれを行う方法がわかりませんが、これはプログラムで機能するはずです。これをアクティビティに追加してみてください(おそらくアクティビティのメインビューに)。

//grab layout params
WindowManager.LayoutParams lp = this.getWindow().getAttributes();

//remove the dim effect
lp.dimAmount = 0;
0
MikeIsrael