ScrollView скрывает верхние элементы макета - PullRequest
1 голос
/ 15 ноября 2011

У меня довольно простая раскладка диалога и добавлен вид прокрутки, потому что диалог может быть довольно длинным и не помещаться на экране. Когда я первоначально запускаю диалог (он соответствует экрану), все в порядке, затем я меняю ориентацию устройства на альбомную, диалог делаетбольше не помещается на экран, появляется прокрутка, но несколько верхних элементов (до @ + id / addr_label) становятся невидимыми, хотя между заголовком и первым видимым элементом существует некоторое пустое пространство.Самое запутанное - когда я переключаю устройство обратно в портретную ориентацию, эти элементы все еще невидимы.

ОБНОВЛЕНИЕ: только что проверил случай, когда телефон изначально находится в горизонтальном режиме - в этом случае все элементы отображаются правильно.когда я изменяю его обратно на портрет - элементы исчезают.Кажется, это ошибка «изменить ориентацию»

В чем может быть проблема?

Схема и скриншоты приведены ниже (Android 2.3.5)

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root22" android:orientation="vertical"
    android:layout_width="wrap_content" android:layout_height="fill_parent"
    android:padding="0dp">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root" android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:padding="10dp">

    <TextView android:id="@+id/details_ssid"
        android:layout_width="wrap_content" 
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="" 
        android:layout_marginLeft="5dip"/>

    <TextView android:id="@+id/details_bssid"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <TextView android:id="@+id/latitude"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <TextView android:id="@+id/longitude"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <TextView android:id="@+id/addr_label"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="@string/address_label" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <EditText android:id="@+id/address"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <TextView android:id="@+id/descr_label"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="@string/description_label" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <EditText android:id="@+id/description"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:text="" 
        android:layout_weight="1"
        android:layout_marginLeft="5dip"/>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout_root" android:orientation="horizontal"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:padding="10dp">

    <Button
    android:id="@+id/yes"
        android:layout_width="fill_parent" 
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true" 
        android:layout_alignParentBottom="true"
        android:layout_marginTop="10dip" 
        android:layout_marginRight="10dip"
        android:text= "@string/Yes"
        android:visibility="visible"
    />


    <Button
    android:id="@+id/no"
        android:layout_width="fill_parent" 
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" 
        android:layout_alignParentBottom="true"
        android:layout_marginTop="10dip" 
        android:layout_marginRight="10dip"
        android:text= "@string/No"
        android:visibility="visible"
    />  
    </LinearLayout>

    </LinearLayout> 

</ScrollView>

Коддовольно скучно: onCreateDialog в Activity, которая устанавливает макет, и onPrepareDialog, который устанавливает значения для всех этих полей

onCreateDialog

    case CONFIRM_SHARE_AP:
    {
        final Dialog dialog = new Dialog(this){
            public void onBackPressed()
            {
                dismissDialog(CONFIRM_SHARE_AP);
            }
        };

        dialog.setContentView(R.layout.ap_add_confirmation);

        dialog.setTitle(R.string.confirm_share);

        Button cancel = (Button) dialog.findViewById(R.id.no);
        cancel.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                dismissDialog(CONFIRM_SHARE_AP);

            }
        });
        return dialog;          
    }

onPrepareDialog не имеет ничего конкретного

http://img525.imageshack.us/img525/4642/devicev1.png

http://img13.imageshack.us/img13/985/devicev2.png

1 Ответ

0 голосов
/ 22 января 2012

Нашел рут проба. Это связано с тем, что во время изменения ориентации активность перезапускается (по умолчанию), и поэтому диалоги воссоздаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...