2010-07-19 4 views
12

게임이 끝날 때 맞춤 알림 대화 상자를 표시하여 플레이어가 이름을 입력하여 저장할 수있게했습니다. 문제는 대화 상자에 show()이라고 부르면 나타납니다. 그러나 수직으로 가운데에 있지 않습니다. 그것은 xml에서 설정 한 속성이나 setGravity()을 사용할 때보다 조금 더 낮습니다.Android에서 세로 맞춤이 아닌 맞춤 알림 대화 상자

이것은 the one mentioned here과 같은 문제라고 생각하지만 아무도 적절한 대답을하지 못했습니다.

도움 주셔서 감사합니다. 자세한 내용은

, 여기에 내 코드입니다 :

AlertDialog.Builder builder; 

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); 

    builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 

    newRecDialog = builder.create(); 

그리고 여기 newrecord.xml의 XML 레이아웃의 첫 번째 요소의 코드입니다 : 출력 스크린 샷 여기

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:gravity="center" 
android:padding="10dp" 
android:baselineAligned="true"> 

된다 alt text http://the.niox.free.fr/divers/dialog_offset.png

답변

0

AlertDialog의 특성을 android:gravity="center" 또는 프로그래밍 방식으로으로 설정하십시오.. 이 중력은 모바일 디스플레이가 아닌 레이아웃에만 사용됩니다. 사용자 정의 제목을 사용하면 해당 항목이 가운데 수직으로 보이지 않습니다.

+0

이미 모든이 시도 : 다음 대화 빌더에 스타일을 적용

<style name="CustomDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> 

을 작동하지 않습니다. XML 파일은 실제로 내가 부 풀리는 대화 상자의 내용에 대한 설명입니다. – NioX5199

+0

나는 당신을 제대로 얻지 못한다. 그러나보기의 내용이 중력에 영향을 미치지는 않습니다. 그래서 코드를 게시하십시오. 나는 시도 할 것이다. – Praveen

+0

@ NioX5199 : 출력 화면을 게시 할 수 있습니까? – Praveen

0

답변이 없지만 비슷한 문제가있었습니다. 그것은 중심에있는 것처럼 보이지만 AlerterDialog에 제목 집합이 있다고 가정합니다. 제 경우에는 제목을 정했습니다.

3

버그는 here으로 설명되어 있습니다. AlertDialog는 제목이나 아이콘이없는 곳에서도 제목/아이콘 패널의 공간을 예약합니다.

수정 사항은 매우 간단합니다. 버튼이없는 경우 버튼 패널에서와 마찬가지로 상단 패널 레이아웃을 GONE으로 설정해야합니다. 그 때까지 유일한 방법은 자신 만의 Dialog 서브 클래스를 구현하는 것입니다.

+0

상단 패널? 상단 패널 레이아웃을 어떻게 설정합니까? – ThePerson

2

사용자 지정 경고 대신 활동을 사용할 수 있습니다. 당신은 안드로이드 매니페스트 파일 대화로 활동의 테마를 설정해야합니다 :

android:theme="@android:style/Theme.Dialog" 

그리고 당신은 당신의 필요에 따라 활동 XML 레이아웃을 조정할 수 있습니다.

0

setView 대신 AlertDialog.Builder.setCustomTitle(View);을 사용해 볼 수 있습니까? 경고 대화 상자가 빈 제목이있는 대화 상자보다 조금 더 잘 보이기 때문에 사용합니다. 당신이 왼쪽 등에서 여백을 사용하는 경우

0

당신은 첫째로 당신의 XML에서 그 패딩 라인을 제거 XML 에 다음 줄을 사용해야하고이 후 그

android:layout_gravity="center" 

후 대화 상자가 중앙에 표시되고 그것을 제거하는 것보다 당신은

android:layout_width="fill_parent" 

android:layout_width="wrap_content" 
로 변경보다 것을 사용하고 또한 경우

그 후 대화 상자가 중앙에 나타납니다.

0

시도 :

newRecDialog.getWindow().getAttributes().gravity = Gravity.CENTER; 
2

당신이 당신의 자신의 대화 라인 requestWindowFeature (Window.FEATURE_NO_TITLE) 제목 패널을 숨기고 대화 상자가 화면 중앙을 구현하는 경우. 어쩌면 AlertDialog에서도 작동합니다.

1

안드로이드 : 테마 = "@ 안드로이드 : 스타일/Theme.Dialog를"

0

당신은 창 제목을 해제해야합니다. 먼저 당신의 대화에 대한 사용자 지정 스타일을 만들 (당신의 요구에 맞는 부모 테마 사용해야합니다) :

AlertDialog.Builder builder; 

LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); 

builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.CustomDialog)); 
builder.setView(layout); 

newRecDialog = builder.create(); 
관련 문제