回答:
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">@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>
(値@color/transparent
はファイル#00000000
に入力した色の値res/values/color.xml
です。@android:color/transparent
以降のAndroidバージョンでも使用できます。)
次に、スタイルをアクティビティに適用します。次に例を示します。
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
android:windowIsFloating
にtrue に設定されているため、ダイアログのように動作します。このプロパティを削除すると、通常のアクティビティのように動作します(この場合はに一致しますandroid:style/Theme.Translucent.NoTitleBar
)
AppCompatActivity
ます。だから、parent="android:Theme"
私のアプリをクラッシュしていました。私はそれを取り除いただけで、それは魅力のように働きました。ありがとう!
こんなふうになります:
<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
50% black should be #7f000000
。各コンポーネント(A、R、G、B)はから値を取得できます0-255
。50% of 255 = 127. 127 in Hex = 7F
透明度(不透明度)を計算する方法
styles.xmlで:
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
<item name="android:background">#33000000</item> <!-- Or any transparency or 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>
Theme.Appcompat.Light.NoActionBar
代わりにテーマを継承したい場合があります。
background
はあなたが好みの半透明色を削除して入れたいと思うwindowBackground
私も新しいAndroid開発者なので、これに少し加えたいと思いました。受け入れられた答えは素晴らしいですが、私はいくつかの問題に遭遇しました。私はcolors.xmlファイルに色を追加する方法がわかりませんでした。以下にその方法を示します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="class_zero_background">#7f040000</color>
<color name="transparent">#00000000</color>
</resources>
元のcolors.xmlファイルには、「drawable」というタグがありました。
<drawable name="class_zero_background">#7f040000</drawable>
色についても同じことを行いましたが、 "@ color /"参照がXMLでタグ "color"を探すことを意味することを理解していませんでした。他の人を助けるためにも、これについても言及すべきだと思いました。
2.3.3 android:theme="@android:style/Theme.Translucent"
では、マニフェストにアクティビティタグを追加するだけでそれを実現しました。
下位バージョンについてはわかりません...
AppCompatActivity
場合は使用しないでください。
私の場合、いくつかの条件に基づいてテーマをJavaのランタイムに設定する必要があります。だから私はスタイルで1つのテーマを作成しました(他の回答と同様):
<?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);
}
ここで1つの重要な点を覚えておいてください:のsetTheme()
前に関数を呼び出す必要がありますsuper.onCreate(savedInstanceState);
。私はこの点を逃して2時間スタックし、なぜ私のテーマが実行時に反映されないのかと考えました。
onCreate機能、下にsetContentView、次の行を追加します。
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
上記の回答に加えて:
アクティビティでの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" />
私は2つのことをしただけで、自分の活動が透明になりました。彼らは以下です。
マニフェストファイルで、アクティビティタグに以下のコードを追加しました。
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
そして、そのアクティビティのメインレイアウトの背景を " #80000000 "に設定しました。お気に入り
android:background="#80000000"
それは私にとって完璧に機能します。
使用している場合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"
を使用してTheme.NoDisplay
も機能しますが、古いAndroidデバイスでのみ機能します。Android 6.0以降では、呼び出しなしでTheme.NoDisplayを使用finish()
するonCreate() (or, technically, before onResume())
と、アプリがクラッシュします。これが、この制限の影響を受けないを使用することを推奨する理由です。」Theme.Translucent.NoTitleBar
注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>
<item name="android:windowBackground">@android:color/transparent</item>