Android AlertDialog не центрируется / масштабируется вертикально - PullRequest
0 голосов
/ 21 июня 2011

Я создаю AlertDialog, который содержит пользовательский вид, например, так:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DIALOG_INTRO:
            // setup the dialog
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            View inflatedLayout = ((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.intro, null);
            builder.setView(inflatedLayout);

            // return the dialog
            return builder.create();
    }

    return super.onCreateDialog(id);
}

и формат XML:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:background="#000000">

    <TableLayout 
        android:layout_height="match_parent" 
        android:layout_width="match_parent"
        android:stretchColumns="2"
        android:shrinkColumns="1">

        <TableRow>
            <TextView 
                android:id="@+id/intro_TextView_title"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:gravity="center"
                android:text="@string/intro_title"
                android:textSize="22sp" 
                android:textColor="#FFFFFF" />
        </TableRow>

        <TableRow
            android:layout_marginTop="20dip" >
            <ImageView 
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:layout_marginLeft="25dip"
                android:layout_marginRight="25dip"
                android:paddingTop="2dip"
                android:src="@drawable/intro_add" />
            <TextView 
                android:id="@+id/intro_TextView_add"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_marginRight="20dip"
                android:text="@string/intro_add" 
                android:textColor="#FFFFFF" />
        </TableRow>

        <!-- ... -->

    </TableLayout>
</ScrollView>

Это дает мне диалог, который выглядит примерно так(детали размыты, извините):

blurred AlertDialog screenshot

Проблема в том, что большой зазор вверху (над диалоговым окном).Могу ли я что-нибудь сделать, чтобы избавиться от этого или заставить дно иметь такой же зазор?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Ошибка описана здесь: http://code.google.com/p/android/issues/detail?id=11824. AlertDialog резервирует место для панели заголовка / значка даже там, где нет ни заголовка, ни значка.

Исправление, я думаю,довольно просто: он должен установить верхнюю панель на GONE, так же, как это делается для панели кнопок в случае отсутствия кнопок.Пока это не сделано, единственный обходной путь - реализовать собственный подкласс Dialog.

0 голосов
/ 12 июля 2011

Оказывается, это ошибка (вроде).Вы должны просто реализовать свой собственный диалог, чтобы он работал правильно.

...