android:fix navbar setHidden cause bottombar translucent

This commit is contained in:
pengfei.zhou 2020-02-27 18:38:44 +08:00 committed by osborn
parent 56f21f32cc
commit e11a26bd6d
3 changed files with 152 additions and 134 deletions

View File

@ -29,7 +29,7 @@ android {
} }
afterEvaluate { afterEvaluate {
//buildJSBundle.exec() buildJSBundle.exec()
} }
task buildJSBundle(type: Exec) { task buildJSBundle(type: Exec) {

View File

@ -25,6 +25,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.TextView; import android.widget.TextView;
@ -32,7 +33,6 @@ import android.widget.TextView;
import androidx.annotation.AttrRes; import androidx.annotation.AttrRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import pub.doric.R; import pub.doric.R;
@ -88,15 +88,27 @@ public class BaseDoricNavBar extends FrameLayout implements IDoricNavBar {
@Override @Override
public void setHidden(boolean b) { public void setHidden(boolean b) {
setVisibility(b ? GONE : VISIBLE); setVisibility(b ? GONE : VISIBLE);
AppCompatActivity activity = (AppCompatActivity) getContext(); Activity activity = (Activity) getContext();
Window window = activity.getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (b) { if (b) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().setStatusBarColor(Color.TRANSPARENT); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} }
} else { } else {
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); int visibility = window.getDecorView().getSystemUiVisibility();
visibility = visibility ^ (SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
window.getDecorView().setSystemUiVisibility(visibility);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
}
} }
} }
} }

View File

@ -6,7 +6,9 @@ const shareIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAAD
@Entry @Entry
class NavbarDemo extends Panel { class NavbarDemo extends Panel {
build(rootView: Group): void { build(rootView: Group): void {
scroller(vlayout([ scroller(
vlayout(
[
title("Navbar Demo"), title("Navbar Demo"),
label('isHidden').apply({ label('isHidden').apply({
width: 200, width: 200,
@ -127,12 +129,16 @@ class NavbarDemo extends Panel {
navigator(context).pop() navigator(context).pop()
} }
} as IText), } as IText),
]).apply({ ],
{
layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT), layoutConfig: layoutConfig().most().configHeight(LayoutSpec.FIT),
gravity: gravity().center(), gravity: gravity().center(),
space: 10, space: 10,
} as IVLayout)).apply({ }),
{
layoutConfig: layoutConfig().most(), layoutConfig: layoutConfig().most(),
}).in(rootView) backgroundColor: Color.BLUE,
}
).in(rootView)
} }
} }