在Android中更新WindowManager内部视图时出现问题
下面是添加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
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
。问题在于系统覆盖。如果类型是其他类型,则一切正常。