ScrollView в полноэкранном режиме

мне нужно разработать приложение в полноэкранном режиме, и теперь у меня есть формула с некоторыми текстовыми правками и некоторыми кнопками. Если клавиатура всплывает, она скрывает две кнопки, поэтому я помещаю все в прокрутку:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    tools:context="controller.RegsiterActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/register_textview_firstname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_firstname" />

        <EditText
            android:id="@+id/register_textedit_firstname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <TextView
            android:id="@+id/register_textview_lastname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_lastname" />

        <EditText
            android:id="@+id/register_textedit_lastname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <TextView
            android:id="@+id/register_textview_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_email" />

        <EditText
            android:id="@+id/register_textedit_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="textEmailAddress" />

        <TextView
            android:id="@+id/register_text_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dip"
            android:singleLine="true"
            android:text="@string/text_password" />

        <EditText
            android:id="@+id/register_textedit_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dip"
            android:inputType="text" />

        <Button
            android:id="@+id/register_button_register"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_register" />

        <Button
            android:id="@+id/register_button_cancel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_cancel" />

    </LinearLayout>

</ScrollView>

Как я уже сказал, мне нужно запустить приложение в полноэкранном режиме:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

Но когда я сейчас запускаю свое приложение, не появляется scrollView, и прокрутка не работает.

Как заставить работать scrollView?


person Mulgard    schedule 25.10.2014    source источник
comment
рассмотрите возможность добавления android:fillViewport="true"   -  person santalu    schedule 25.10.2014
comment
установите высоту scrollview на match_parent   -  person Panther    schedule 25.10.2014
comment
добавил оба. Ничего не изменилось.   -  person Mulgard    schedule 25.10.2014
comment
ты видишь весь контент на экране   -  person Lokesh    schedule 28.10.2014
comment
нет, я не могу увидеть весь контент.   -  person Mulgard    schedule 29.10.2014


Ответы (3)


Первый атрибут, который вы, вероятно, должны добавить к ScrollView:

android:fillViewport="true" 

Если установлено значение true, этот атрибут заставляет дочерний элемент представления прокрутки расширяться до высоты ScrollView, если это необходимо. Когда дочерний элемент выше ScrollView, атрибут не действует.

Кроме того, измените размеры макета fill_parent на match_parent, потому что fill_parent устарело, и вы можете избавиться от любых надоедливых предупреждений.

Кроме того, измените атрибут layout_height элемента LinearLayout на match_parent, чтобы его размер изменялся вместе с изменениями конфигурации экрана ScrollView, такими как подтягивание клавиатуры.

Кроме того, аналогично предложению @karvoynistas, вам следует взглянуть на < strong>windowSoftInputMode свойство.

Вы можете добавить это свойство в свою деятельность:

<activity
    android:windowSoftInputMode="stateVisible|adjustResize"
    ...>

    <!-- ... -->

</activity>

Результатом этого является (согласно Android docs< /а>):

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

Добавление значения adjustPan к атрибуту windowSoftInputMode может сработать, но не совсем то, что вам нужно, поскольку может вызвать необычный эффект (см. ниже).

Сравнение двух значений в Android Docs:

настройка размера

Размер главного окна действия всегда изменяется, чтобы освободить место для экранной клавиатуры.

настроить панораму

Размер главного окна действия не изменяется, чтобы освободить место для программной клавиатуры. Вместо этого содержимое окна автоматически панорамируется, так что текущий фокус никогда не перекрывается клавиатурой, и пользователи всегда могут видеть, что они печатают. Обычно это менее желательно, чем изменение размера, потому что пользователю может потребоваться закрыть виртуальную клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.

person nem035    schedule 27.10.2014

Нет необходимости ставить scrollView по этой причине, если позиционирование вас устраивает до появления клавиатуры. Все, что вам нужно сделать, чтобы избежать проблем с прокруткой клавиатуры, — это установить в файле манифеста внутри объявления конкретной активности следующее:

android:windowSoftInputMode="adjustPan"
person karvoynistas    schedule 27.10.2014

В файле манифеста приложения добавьте к нужному <activity/> следующую строку:

android:windowSoftInputMode="stateAlwaysHidden|adjustResize|adjustPan"

Эта ссылка указывает на ту же проблему.

person Menelaos Kotsollaris    schedule 02.11.2014
comment
предоставленная вами ссылка не связана с проблемами прокрутки в полноэкранном режиме. и это не решает проблему. - person Mulgard; 02.11.2014