2014-12-11 1 views
0

대화 상자를 사용하고 싶지만 화면에 세로로 가운데 놓기를 원하지 않습니다.안드로이드 대화 상자를 중앙에 배치하지 않는 방법은 무엇입니까?

Dialog을 만들고 SetContentView()을 사용하여 레이아웃을 적용했습니다.
나는 또한 스타일과 제목 옵션을 적용하지 않았습니다. 여기 내가 한 일이있다.

mydialog = new Dialog (context, Resource.Style.myDialogAnim); 
mydialog.RequestWindowFeature ((int)WindowFeatures.NoTitle); 
mydialog.SetContentView (myDialogView); 
mydialog.SetCanceledOnTouchOutside (false); 

나는이 대화에 적용되는 스타일은 여기에 있습니다 : 나는이 대화 상자를 사용하면

<style name="myDialogAnim" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowAnimationStyle">@style/slideInAndOut</item> 
    <item name="android:windowIsFloating">false</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
</style> 
<style name="slideInAndOut"> 
    <item name="android:windowEnterAnimation">@anim/anim_animatein</item> 
    <item name="android:windowExitAnimation">@anim/anim_animateaway</item> 
</style> 

는 대화 상자가 애니메이션 즉시 anim_animateintoYDelta 위치로 fromYDelta 위치에서 애니메이션을하지만, 행해지면, 그 자체가 수직으로 집중됩니다.

화면에서 가로로 가운데에 있어야하지만 세로로는 안됩니다.

어떻게하면됩니까?

감사합니다.

+0

맞춤 대화 상자 활동 만들기 : dialogParentLayout.setY()를 사용하여 축을 설정합니다. –

+0

그건 하나의 옵션 이었지만 새로운 활동을 만드는 방법을 찾으려고했습니다. 대화 활동은 나를 위해 필요하지 않았습니다. 아래 답변을 보니 길을 찾았습니다. 어쨌든 고마워요 –

답변

0

나는 그것을 알아 냈다.

WindowManagerLayoutParams dialogParams = mydialog.Window.Attributes; 
dialogParams.Gravity = GravityFlags.Bottom; 
int dialogYPos = 69 * (int)activity.Resources.DisplayMetrics.Density; 
dialogParams.Y = dialogYPos; 

dialogYPos 반환 얼마나 많은 pixels 당신은 위치의에서 위로 이동합니다. 그래서 Gravity에서 Bottom으로 설정 했으므로 화면 하단에서 많은 수의 pixels입니다. 추가

는 :
난 그냥 떠있는 메시지로 대화 상자를 사용하고 있기 때문에, 나는 사용자가 대화 상자가 표시되면 (자), 현재의 활동을 사용할 수있게하고 싶었다. 다음 플래그를 추가하고 완벽하게 작동했습니다.

mydialog.Window.AddFlags (WindowManagerFlags.NotTouchModal);

이제 내 애니메이션과 완전한 사용자 정의와 안드로이드 Toast 위젯으로 Dialog을 사용하고 있습니다.

이 정보가 도움이되기를 바랍니다.

+1

대화 상자는 로그 아웃 - 배터리 로우 (Logout-BatteryLow)처럼 큰 일이 무엇인지 보여주기 위해 안드로이드에서 매우 큰 일들에 사용되는 매우 무거운 것입니다. Google 앱에서 대화를 본 적이 있습니까? RomanNurik의 Appmsg 라이브러리를 사용하여 토스트와 같은 localApp 메시지를 표시하도록 제안합니다. –

+1

나는 실제로 표준 Android'Toast' 위젯을 사용하려했지만 애니메이션과 스타일을 사용할 수 없었습니다. 그래서 '대화'를하기로 결정했습니다. 하지만이 옵션을 살펴 보겠습니다. https://code.google.com/p/romannurik-code/source/browse/misc/undobar 감사합니다. –

+0

지시봉을 가리켜 주셔서 감사합니다. –

관련 문제