gpt4 book ai didi

android - 查看隐藏在导航栏后面的android

转载 作者:行者123 更新时间:2023-11-30 01:17:00 25 4
gpt4 key购买 nike

我正在使用滑动 Activity , View 不适合屏幕,它隐藏在导航栏后面。

我试过了,

<item name="android:fitsSystemWindows">true</item> 
<item name="android:windowDrawsSystemBarBackgrounds">false</item>

但没有任何作用。

这里的 Snackbar 隐藏在 Navigation Bar 后面: enter image description here

最佳答案

嘿,最好的做法是使用 NavigationDrawer,但对于您的问题,请创建一个扩展 SlidingMenu 的类 CustomSlidingMenu覆盖这样的方法。然后使用 CustomSlidingMenu 而不是 SlidingMenu 它应该可以正常工作

public class CustomSlidingMenu extends SlidingMenu {
private boolean mActionbarOverlay = false;

public CustomSlidingMenu(Context context) {
super(context);
}

public CustomSlidingMenu(Activity activity, int slideStyle) {
super(activity, slideStyle);
}

public CustomSlidingMenu(Context context, AttributeSet attrs) {
super(context, attrs);
}

public CustomSlidingMenu(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@SuppressLint("NewApi")
@Override
protected boolean fitSystemWindows(Rect insets) {
if (mActionbarOverlay) return true;

setMyPadding(insets);
return true;
}

@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
@Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
if (mActionbarOverlay) return insets.consumeSystemWindowInsets();

Rect rect = new Rect(
insets.getSystemWindowInsetLeft(),
insets.getSystemWindowInsetTop(),
insets.getSystemWindowInsetRight(),
insets.getSystemWindowInsetBottom()
);

setMyPadding(rect);

return insets.consumeSystemWindowInsets();
}

private void setMyPadding(Rect rect) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
switch (manager.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
case Surface.ROTATION_270:
rect.right += getNavBarWidth();
break;
case Surface.ROTATION_180:
rect.top += getNavBarHeight();
break;
default:
rect.bottom += getNavBarHeight();
}
}

setPadding(
rect.left, rect.top, rect.right, rect.bottom
);
}

private int getNavBarWidth() {
return getNavBarDimen("navigation_bar_width");
}

private int getNavBarHeight() {
return getNavBarDimen("navigation_bar_height");
}

private int getNavBarDimen(String resourceString) {
Resources r = getResources();
int id = r.getIdentifier(resourceString, "dimen", "android");
if (id > 0) {
return r.getDimensionPixelSize(id);
} else {
return 0;
}
}
}

我假设您在我的方法中使用了 AppCompat,所以原因是 SlidingMenu 设置的填充与 AppCompat 配置并覆盖它们。

关于android - 查看隐藏在导航栏后面的android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com