方案一:
设置背景图片, 然后在wm中设置高度为减去navigationbar的高度的,例如这里需要剪掉30
public void click2(View view) {
MyDialog alertDialog = new MyDialog(this,R.style.AppThemeDialogFull);
alertDialog.setTitle("test4");
alertDialog.show();
}
<style name="AppThemeDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
<!-- Customize your theme here. -->
<item name="android:backgroundDimAmount">0.5</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@mipmap/background_1</item>
</style>
package bjpkten.systemuiflagtest;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.ViewGroup;
import android.view.WindowManager;
/**
* Created by Kodulf on 2019/1/15.
*/
public class MyDialog extends Dialog {
public MyDialog( Context context) {
super(context);
// getWindow().requestFeature(Window.FEATURE_NO_TITLE);
// getWindow().setDimAmount(0.5f);
// getWindow().setBackgroundDrawable(R.mipmap.background_1);
}
public MyDialog( Context context, int themeResId) {
super(context, themeResId);
}
protected MyDialog( Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
@Override
public void show() {
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
// getWindow().getDecorView().setPadding(0,0,0,0);
// WindowManager.LayoutParams attributes = getWindow().getAttributes();
// attributes.width= 1000;
// attributes.height = 2800;
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
super.show();
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,290);
// getWindow().getDecorView().setPadding(0,0,0,0);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN|WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS|WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// getWindow().setNavigationBarColor(Color.parseColor("#474747"));
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
// getWindow().getDecorView().setPadding(300,300,300,300);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
方案二:
本文提供了两种Android Dialog的设置方案,旨在实现Dialog只遮挡StatusBar而不遮挡NavigationBar的效果。方案一通过设置背景图片并在WindowManager中调整高度;方案二则提供另一种实现方法。
949

被折叠的 条评论
为什么被折叠?



