RelativeLayout не прокручивается в ScrollView

Любая идея, почему следующий макет не прокручивается? У меня RelativeLayout в ScrollView. Представления помещаются на экране. однако они закрываются всякий раз, когда появляется клавиатура. Я хочу сделать экран прокручиваемым, когда появляется клавиатура, потому что он закрывает поля ввода имени пользователя и пароля, поэтому трудно увидеть, что кто-то печатает.

<?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">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <com.alarm.alarmmobile.android.view.RobotoLightTextView
            android:id="@+id/passcode_login_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginTop="20dp"
            android:text="@string/passcode_login_body"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/passcode_login_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/passcode_login_text"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginTop="20dp"
            android:hint="@string/login_textview_username"
            android:singleLine="true" />

        <EditText
            android:id="@+id/passcode_login_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/passcode_login_username"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:hint="@string/login_textview_password"
            android:inputType="textPassword"
            android:singleLine="true" />

        <com.alarm.alarmmobile.android.view.RobotoLightButton
            android:id="@+id/passcode_login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@id/passcode_login_password"
            android:layout_marginRight="16dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:text="@string/login_button_login" />

    </RelativeLayout>

</ScrollView>

person Alan Ford    schedule 25.07.2014    source источник
comment
Покажите нам, как это выглядит   -  person Eldar Miensutov    schedule 25.07.2014
comment
Попробуйте поместить android:orientation="vertical" в ScrollView.   -  person Huy Tran    schedule 25.07.2014
comment
android:orientation=vertical не исправляет это.   -  person Alan Ford    schedule 25.07.2014


Ответы (3)


В классе активности или фрагмента этого макета вы должны вызвать это:

getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
person luiscosta    schedule 25.07.2014
comment
Это работает, но есть ли альтернатива достижению того же самого? Мне нужно иметь android:windowSoftInputMode=adjustPan - person Alan Ford; 25.07.2014

Включите это в свой манифест:

<activity android:name="..." // your activity here
    ....
    android:windowSoftInputMode="adjustResize|adjustPan">
/>

ПРИМЕЧАНИЕ. Не уверен, что добавление adjustPan вызовет повторное появление проблемы или нет.

person Huy Tran    schedule 25.07.2014
comment
Это работает, но есть ли альтернатива достижению того же самого? Мне нужно иметь android:windowSoftInputMode=adjustPan - person Alan Ford; 25.07.2014

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

person Mark N    schedule 25.07.2014
comment
Вы правы, два EditBox помещаются на экране. Они закрываются всякий раз, когда появляется клавиатура. Это когда я хочу прокручивать содержимое. Как я могу это сделать? - person Alan Ford; 25.07.2014
comment
Как мне сделать его прокручиваемым, даже если все помещается на экране? - person Alan Ford; 25.07.2014