1

プログラムでウィンドウの背景を設定する必要があり、カスタムスタイルのXMLを使用できないライブラリを開発しています。ライブラリを実装するユーザーは、好きなテーマを設定できるという考え方です。背景を透明にする必要があります。したがって、ウィジェットのすべてのスタイルは同じままです。

WindowManager.LayoutParams.FLAG_DIM_BEHINDやのようないくつかのウィンドウフラグを試しWindowManager.LayoutParams.FLAG_BLUR_BEHINDましたが、どれも機能していませんでした。

私が見つけたすべてのソリューションは、スタイルxmlファイルに基づいています。

コードから直接windowIsTranslucentを設定する方法はありますか?

よろしくお願いします、ローマン

4

4 に答える 4

1

いいえ、これは不可能です。

windowIsTranslucentテーマのみ設定可能です。

提案; 他の人が上書きできる独自のテーマを作成します。

于 2012-11-27T14:34:58.250 に答える
0

android:windowIsTranslucent、、android:windowIsFloatingおよびandroid:windowNoDisplayは、アクティビティが開始される前に、すべて1回だけ読み取られます。したがって、独自のコードを実行するときには手遅れです。

http://osxr.org:8080/android/source/frameworks/base/services/java/com/android/server/am/ActivityRecord.java#0399

于 2016-10-10T01:18:59.363 に答える
0

これを使った

@Override
protected void onCreate(Bundle savedInstanceState) {
    processSetTheme(this);
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    getWindow().setBackgroundDrawableResource(R.color.realTranslucent);
    if (Build.VERSION.SDK_INT>=19){
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
    super.onCreate(savedInstanceState);

<color name="realTranslucent">#00000000</color>
于 2018-07-19T02:31:55.127 に答える
-1

ここにトリックがあります:最初に半透明のアクティビティを使用します。次に、アクティビティのレイアウトファイルのトップレイアウトの背景を設定できます。

于 2014-02-28T09:58:45.847 に答える