I have an activity to edit some text with a top bar a EditText view in multiline mode inside a scrollview. At the bottom another view with 2 buttons. What I wanted to achieve is when editing the text that bottom bar would be below the softkeyboard. That is easy using android:windowSoftInputMode="adjustPan" in the manifest. The problem is if the edittext becomes big enough with several lines, when editing the topbar it disappears. This only occurs when using adjustPan mode. But the worst and I think it's a bug, its when the cursor is at the end of the edittext view and scrolling up using the D-Pad joystick all the layout is pulled to the top.
This is the screen without focus on the EditText: https://i.stack.imgur.com/pFadV.png
When the bug occurs with the scrolling, this happens: https://i.stack.imgur.com/eS8PP.png
My layout is the following:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/BackgroundGray"
android:gravity="top|center"
android:orientation="vertical"
android:windowSoftInputMode="adjustPan" >
<RelativeLayout
android:id="@+id/top_bar"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:layout_alignParentTop="true"
android:background="@drawable/top_bar"
android:focusable="true"
android:focusableInTouchMode="true" >
<ImageView
android:id="@+id/bar_item_priority"
android:layout_width="4dip"
android:layout_height="34dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:contentDescription="@string/priority" />
<EditText
android:id="@+id/bar_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="6dip"
android:background="@android:color/transparent"
android:fadingEdge="vertical"
android:gravity="center_vertical|left"
android:hint="@string/default_title"
android:inputType="text|textCapSentences"
android:paddingLeft="10dip"
android:textColor="#f3f3f3"
android:textColorHint="#20ffffff"
android:textSize="20dip"
android:textStyle="bold" >
</EditText>
</RelativeLayout>
<View
android:id="@+id/main_top_bar_shadow"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:layout_below="@+id/top_bar"
android:background="@color/TopBarShadow" />
<LinearLayout
android:id="@+id/meta_bar"
android:layout_width="fill_parent"
android:layout_height="25dip"
android:layout_below="@+id/main_top_bar_shadow"
android:background="#313435"
android:descendantFocusability="blocksDescendants" >
<TextView
android:id="@+id/meta_date_modified"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|left"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="6dip"
android:shadowColor="#1d1d1d"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="2"
android:text="@string/default_date"
android:textColor="#9d9d9d"
android:textSize="12dip"
android:textStyle="bold" >
</TextView>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/bottom_bar"
android:layout_below="@+id/meta_bar"
android:fillViewport="true"
android:scrollbarSize="2dip"
android:scrollbarThumbHorizontal="@drawable/scrollbar"
android:scrollbarThumbVertical="@drawable/scrollbar"
android:scrollbars="vertical" >
<view
android:id="@+id/note"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:capitalize="sentences"
class="home.greven.notes.NoteEditor$LinedEditText"
android:fadingEdge="vertical"
android:gravity="top"
android:paddingBottom="8dip"
android:paddingLeft="11dip"
android:paddingRight="11dip"
android:paddingTop="8dip"
android:textSize="16sp" >
</view>
</ScrollView>
<View
android:id="@+id/bottom_bar_shadow"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:layout_above="@+id/bottom_bar"
android:background="@color/TopBarShadow"
android:focusable="false"
android:focusableInTouchMode="false" />
<LinearLayout
android:id="@+id/bottom_bar"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:layout_alignParentBottom="true"
android:background="@drawable/bottom_buttons_bar"
android:descendantFocusability="blocksDescendants" >
<Button
android:id="@+id/bottom_bar_button_plaintext"
style="@style/NoteEditorButtonText"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="4dip"
android:layout_weight="0.5"
android:background="@drawable/small_blue_buttonstates"
android:text="@string/plain_text" />
<Button
android:id="@+id/bottom_bar_button_checklist"
style="@style/NoteEditorButtonText"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="4dip"
android:layout_weight="0.5"
android:background="@drawable/small_gray_buttonstates"
android:onClick="toChecklist"
android:text="@string/checklist" />
</LinearLayout>
</RelativeLayout>
If I use adjustResize in android:windowSoftInputMode everything works well but then the bottom bar will be visible when editing, something I didn't want to happen. I think this scrolling issue is an Android bug. Any help would be very appreciated!