実行時にアクティビティにsetTheme
を割り当てたいのですが、Googleでいくつかのソリューションを検索しています。誰かがonCreateとsetContentViewが機能する前にsetTheme
を呼び出すと言った
public void onCreate(Bundle savedInstanceState) {
setTheme(Android.R.style.Theme_Translucent_NoTitleBar);
super.onCreate(savedInstanceState);
...
setContentView(...)
}
動作しません、知りたいのですが、テーマをアクティビティに設定できる別のソリューションはありますか?
ちょうどこれを試してください-super.onCreate(savedInstanceState);
の後でsetContentView(...)
の前にテーマを設定してください
以下のコードのように-
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTheme(Android.R.style.Theme_Translucent_NoTitleBar); // Set here
setContentView(...)
}
実際、これは私がsuper.onCreate(savedInstanceState);
を呼び出す前に設定した場合にのみ機能しました
public void onCreate(Bundle savedInstanceState)
{
final int themeRes = getIntent().getIntExtra(EXTRA_THEME_ID, 0);
if (themeRes != 0) setTheme(themeRes);
super.onCreate(savedInstanceState);
//ect...
}
setContentView(...);
setTheme(R.style.MyTheme);
setContentView(...);
うまくいくはずです。
テーマの詳細については、こちらをご覧ください http://entertheinfinity.blogspot.in/2016/06/designing-Android-interface-themes.html
実行時にテーマを設定し、「黒い背景」の問題を修正するには:
テーマはonCreate()
の前に設定する必要があります。
public void onCreate(Bundle savedInstanceState) {
setTheme(Android.R.style.Theme_Translucent_NoTitleBar);
super.onCreate(savedInstanceState);
...
setContentView(...)
}
Androidマニフェストの透明なアクティビティのテーマは、透明な背景を持つ任意のテーマ(ダイアログのテーマなど)に設定する必要があります。
これにより、Android OSは透明なアクティビティの背後にアクティビティを描画し続けるので、背景が黒くならないようになります。
私はAppCompatActivity
を使用しています。 AppCompat
テーマを使用する必要があります:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.app">
...
<application
...>
...
<activity
Android:name=".TranslucentActivity"
Android:theme="@style/Theme.AppCompat.DayNight.Dialog"
.../>
...
</application>
</manifest>