0
下面是添加WindowManager以保持其他視圖之上的代碼。在Android中更新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方法被調用,並且沒有例外,但視圖沒有更新。任何人都可以在這裏指出問題嗎?
它看起來對我像你在膨脹您查找和更新'R.id.caller_name'一個新的層次。除非你在其他地方附加了新增的視圖層次結構(更新視圖),否則它將永遠不可見。 –
不需要再次對'mainView'進行膨脹,只需使用已添加到'windowManager'中的'mainView'。 – user370305
問題出在SYSTEM_OVERLAY上。如果類型是別的,一切都很好。 – intrepidkarthi