我想动态创建一个位于所有活动顶部的按钮

时间:2013-08-28 10:11:32

标签: android button service window-managers

我在DialpadFragment中创建了它,但是当MO调用时,InCallScreen将始终覆盖我的按钮。这是我的代码:

private void createStopButton() {
    if (mstopButton == null) {
        mstopButton = new Button(mActivity);
        mstopButton.setText("Stop Dial");
    }


    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY|
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
            WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
            PixelFormat.OPAQUE);
     params.gravity = Gravity.CENTER | Gravity.TOP;


    final WindowManager wm = (WindowManager)mActivity.getSystemService(Context.WINDOW_SERVICE);

    mstopButton.setOnClickListener( new View.OnClickListener() {
        public void onClick(View view) {
            mIsRedialStatus = false;
            wm.removeView(mstopButton);
        }
    });

    wm.addView(mstopButton, params);
}

任何人都可以帮助解决如何将我的按钮放在屏幕顶部的问题。我已经在互联网上调查了很多代码,我发现他们将顶层相关代码放在一个服务中。 我应该用服务实现它吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

我刚回答了一个与此类似的问题。查看此答案的第一部分:Creating bodyless activity

但是,是的,你需要通过服务来做到这一点。请记住,您需要找到启动服务的方法(最简单的方法是使用活动)。