2013-08-28 48 views
0

我在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); 
} 

任何人都可以幫助解決如何使我的按鈕在屏幕的頂部。我在互聯網上調查了很多代碼,我發現他們將頂層相關代碼放在一個服務中。 我是否也應該使用服務來實現它?非常感謝!

回答

0

我剛剛回答了一個類似於這個。看看這個答案的第一部分:Creating bodyless activity

但是,你需要通過服務來做到這一點。請記住,您需要找到啓動服務的方式(最簡單的方法是使用活動)。