在Android中更新WindowManager内部视图时出现问题

在Android中更新WindowManager内部视图时出现问题,android,layout,view,android-windowmanager,Android,Layout,View,Android Windowmanager,下面是添加WindowManager以保持在其他视图顶部的代码 private View mainView; private WindowManager.LayoutParams params; windowManager = (WindowManager) getSystemService(Service.WINDOW_SERVICE); params = new WindowManager.LayoutParams( WindowManager.L

下面是添加WindowManager以保持在其他视图顶部的代码

private View mainView;
private WindowManager.LayoutParams params;
windowManager = (WindowManager) getSystemService(Service.WINDOW_SERVICE);
       params = new WindowManager.LayoutParams(
               WindowManager.LayoutParams.WRAP_CONTENT,
               WindowManager.LayoutParams.WRAP_CONTENT,
               WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
               WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_FULLSCREEN,
               PixelFormat.TRANSLUCENT);

params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 0;
windowManager.addView(mainView, params);
它很好用。在窗口管理器中展开布局并动态更新布局。但我无法更新视图

LayoutInflater inflater = LayoutInflater.from(CallTimerService.this);
       mainView = inflater.inflate(R.layout.call_dialog, null);
callerNameTv = (TextView) mainView.findViewById(R.id.caller_name);
callerNameTv.setText(name);

调用了setText方法,没有异常,但视图没有更新。有人能指出这个问题吗?

更新要修改的特定视图:

//获取视图参数
WindowManager.LayoutParams paramNameTV=(WindowManager.LayoutParams)callerNameTv.getLayoutParams();
//更新视图布局
windowManager.UpdateView布局(callerNameTv、paramNameTV);

在我看来,您正在扩展一个新的层次结构,在其中查找并更新
R.id.caller\u name
。除非您将新膨胀的视图层次结构(具有更新的视图)附加到其他位置,否则它将永远不可见。无需再次膨胀
mainView
,只需使用添加到
windowManager
中的相同
mainView
。问题在于系统覆盖。如果类型是其他类型,则一切正常。