2016-06-08 3 views
0

나는 팝업 창으로 보여주고 싶은 활동이 있습니다.팝업 활동 위치

다음 코드가 있지만 가운데에 활동이 표시됩니다. 나는 다른 위치에 그것을 보여주고 싶다. 아마도 내 도구 모음 아래에.

 protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_popup_message); 

    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int width = dm.widthPixels; 
    int height = 120; 

    getWindow().setLayout((int) (width * .98), height); 

답변

1

현재보기 창을 가져와 해당 창의 x 및 y 매개 변수를 설정해야합니다. 그래서 그것은 원하는 장소에 설정됩니다.

다음은 대화 상자를 원하는 위치에 설정 한 예입니다.

Window window = getWindow(); 
    // set "origin" to top left corner, so to speak 
    window.setGravity(Gravity.TOP | Gravity.START); 
    // after that, setting values for x and y works "naturally" 
    WindowManager.LayoutParams params = window.getAttributes(); 
    params.x =selectedViewWidth; 
    params.y = selectedViewHeight/2; 

    window.setAttributes(params); 

개인적으로 대신 작업을 사용 후 팝업 창을 표시하려는 경우, 당신은 또한 PopupWindow 또는 DialogFragment를 사용할 수 있다고 생각합니다. 이 컨트롤을 통해보다 효과적으로 관리 할 수 ​​있습니다. 동일한 튜토리얼을 사용할 수 있습니다.

+0

고맙습니다! 작성한 코드를 추가했지만 getDialog()에 문제가 있습니다. 내가 다른 곳에서 정의 할 필요가있는 것입니까? – Filippo

+0

'Window window = getWindow()'를 사용하십시오; getDialog()는 현재 윈도우를 가져 오기위한 코드입니다. 당신이 활동하고있을 때 대신'getWindow()'를 직접 사용할 수 있습니다. – Beena