背景
我试图在当前活动之上放置一个层,该层将解释当前屏幕上发生的情况,类似于联系+应用程序 https://play.google.com/store/apps/details?id=com.contapps.android .
我知道有一些解决方案(比如展示案例库 https://stackoverflow.com/questions/17972903/alternative-to-showcase-library-for-app-user-tutorials和 superToolTips 库),我也知道我可以创建一个视图并将其添加到活动窗口中将其设置在顶部,但我需要将整个对话框层放在顶部。
Problem
无论我尝试什么,每个解决方案都无法按照我需要的方式工作。
简而言之,我需要的是:
我尝试过什么
可悲的是,我总是只得到我需要的一部分。
这是我的代码:
样式.xml:
<style name="full_screen_dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>
MainActivity.java:
...
final Dialog dialog = new Dialog(this, R.style.full_screen_dialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.floating_tutorial);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
dialog.getWindow().setFormat(PixelFormat.TRANSLUCENT);
dialog.show();
这段代码会将布局放在活动之上,但遗憾的是它没有任何透明度,即使我已经设置了它。我使用的布局非常简单,这就是我不发布它的原因。
Question
我缺少什么?应该做什么来修复代码?
我怎样才能使对话框既透明,全屏,又不会改变操作栏和通知栏。
工作溶液
编辑:找到一个好的解决方案后,这是工作代码:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.floating_tutorial);
final Window window = dialog.getWindow();
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}