Вот код для добавления 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
. Если вы не прикрепите эту недавно расширенную иерархию представлений (с обновленным представлением) где-то еще, она никогда не будет видна. - person MH.   schedule 28.04.2015mainView
, просто используйте тот жеmainView
, который вы добавили кwindowManager
. - person user370305   schedule 28.04.2015