怎么隐藏Android studio 顶部显示的文件路径,还有哪个导航栏

2025-05-21 05:08:13
推荐回答(1个)
回答(1):

  在NavigationBar的布局左部加入一个Button(在SystemUI模块实现),点击隐藏NavigationBar,即将NavigationBar从WindowManager中移除掉。需要的时候,通过一个从屏幕底部向上的滑动手势(在policy模块实现)调出NavigationBar。如下两图对比所示:一张为移除前,另一张为移除后。

  具体实现:
  ①.增加按钮实现动态隐藏,主要修改在frameworks/base/packages/SystemUI模块,首先我们增加一个按钮,主要修改
  frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml文件,图片资源和字符串我就不提了,具体如下:
  
  diff --git a/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml b/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml
index 16027d9..326aafc 100644
--- a/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml
+++ b/frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml
@@ -42,12 +42,28 @@
>

+
+
+
+
+

+

+
+
+
+
+

+

接下来修改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java,为按钮提供一个接口,具体如下:
  
  diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 88e71e2..7545984 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -45,6 +45,7 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.DelegateViewHelper;
import com.android.systemui.statusbar.policy.DeadZone;
+import com.android.systemui.statusbar.policy.KeyButtonRipple;
import com.android.systemui.statusbar.policy.KeyButtonView;

import java.io.FileDescriptor;
@@ -265,6 +266,13 @@ public class NavigationBarView extends LinearLayout {
public View getImeSwitchButton() {
return mCurrentView.findViewById(R.id.ime_switcher);
}
+ //BEGIN liweiping
+ public View getHideBarButton() {
+ View view = mCurrentView.findViewById(R.id.hide_bar_btn);
+ view.setBackground(new KeyButtonRipple(getContext(), view));
+ return view;
+ }
+ //END liweiping

private void getIcons(Resources res) {
mBackIcon = res.getDrawable(R.drawable.ic_sysbar_back);
@@ -412,7 +420,6 @@ public class NavigationBarView extends LinearLayout {
mCurrentView = mRotatedViews[Surface.ROTATION_0];

getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
-
updateRTLOrder();
}

  

最后便是在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java实现点击事件了:
  
  + private final OnClickListener mHideBarClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Log.i(way, mHideBarClickListener onClick...);
+ removeNavigationBar();
+ }
+ };

+ private void removeNavigationBar() {
+ if (DEBUG) Log.d(TAG, removeNavigationBar: about to remove + mNavigationBarView);
+ if (mNavigationBarView == null) return;
+
+ mWindowManager.removeView(mNavigationBarView);
+ mNavigationBarView = null;
+ }

  

到此,隐藏NavigationBar告一段落了。

附上出处链接:http://www.2cto.com/kf/201505/399678.html