1

我正在开发一个库,我必须以编程方式设置窗口背景,并且不能使用自定义样式 XML。这个想法是实现库的用户可以设置他想要的任何主题 - 我只需要使背景透明。所以小部件的所有样式都将保持不变。

我尝试了一些窗口标志,例如WindowManager.LayoutParams.FLAG_DIM_BEHINDand 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都只读取一次,甚至在您的活动开始之前。因此,当您运行自己的代码时,为时已晚。

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