2014-12-12 4 views
1

My Layout изменяется, когда клавиатура всплывает. В частности, кнопка Register перемещается вверх и опирается поверх одного из EditTexts. Я хочу, чтобы мой вид остался одного размера и мог прокручивать его в небольшом окне просмотра, когда открыта клавиатура. Я пробовал Android: windowSoftInputMode = "adjustResize" (кнопка перемещается) и "adjustPan" (кнопка не перемещается, но чтобы увидеть кнопку, сначала нужно закрыть клавиатуру)Android Layout: кнопка перемещается, когда всплывает клавиатура

У меня есть xml -file:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fillViewport="true" 
> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#ffffff"> 
    <LinearLayout 
     android:id="@+id/register_header" 
     android:orientation="horizontal" 
     android:gravity="center_vertical" 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:padding="@dimen/activity_vertical_margin"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      ... /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      ... /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/register_content" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/register_header" 
     android:padding="@dimen/activity_vertical_margin" 
     android:orientation="vertical" > 

     // Bunch of EditText's here 


    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/register_footer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:gravity="center_vertical|bottom" 
     android:orientation="vertical" 
     android:padding="@dimen/activity_vertical_margin"> 

     <Button 
      android:padding="16dp" 
      android:id="@+id/register_button_register" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/register" /> 

    </LinearLayout> 

</RelativeLayout> 

ответ

0

Вместо RelativeLayout в качестве дочернего ScrollView используйте LinearLayout как этот

<ScrollView> 
    <LinearLayout orientation="vertical"> 
     <LinearLayout orientation="vertical"> 
     <EditTexts /> 
     </LinearLayout> 
     <Button /> 
    </LinearLayout> 
<ScrollView> 

Если у вас есть RelativeLayout и ребенок с alignParentBottom = правда, что ребенок всегда будет в нижней части экран, который в случае adjustResize означает над клавиатурой и над EditTexts.

0

это в вашем манифесте под "" тег активности

android:windowSoftInputMode="adjustNothing" 

для получения дополнительной информации keyboard

+0

adjustNothing не является атрибутом в API Android, я также читаю некоторые сообщения, где он используется, но он может быть опасным из-за разных устройств и их различной обработки .... – Opiatefuchs

+0

, к сожалению, в то время как это решает проблему кнопка перемещается, она также не позволяет мне прокручивать содержимое, когда клавиатура видна. В этом отношении он ведет себя как 'adjustPan' – Cuddl3s

Смежные вопросы