Mam działanie, aby edytować tekst z górnym paskiem w widoku edycji tekstu w trybie wielowierszowym wewnątrz przewijania. U dołu kolejny widok z 2 przyciskami. To, co chciałem osiągnąć, to podczas edycji tekstu, że dolny pasek będzie poniżej softkeyboard. To proste przy użyciu Androida: windowSoftInputMode = "adjustPan" w manifeście. Problem polega na tym, że edittext staje się wystarczająco duży z kilkoma liniami, podczas edycji górnego paska znika. Dzieje się tak tylko przy użyciu trybu adjustPan. Ale najgorsze i myślę, że to błąd, gdy kursor znajduje się na końcu widoku edytorowego i przewija się za pomocą dżojstika D-Pad, cały układ jest przeciągnięty do góry.Android EditText Multiline z SoftInputMode adjustPan
Jest to ekran bez naciskiem na EditText: http://i.stack.imgur.com/pFadV.png
Gdy wystąpi błąd z przewijaniem, tak się dzieje: http://i.stack.imgur.com/eS8PP.png
Mój układ jest następujący:
<?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>
Jeśli I użyj adjustResize w android: windowSoftInputMode wszystko działa dobrze, ale wtedy dolny pasek będzie widoczny podczas edycji, coś, czego nie chcę się stać. Myślę, że ten przewijany problem to błąd Androida. Każda forma pomocy jest mile widziana!
Dzięki za odpowiedzi, ale nadal robi dziwne zachowanie podczas przewijania z D-Pad. – greven
Właściwie to nie testowałem tego kodu w D-pad, ale inne urządzenia nie pokazują tego samego. –
Jedyny problem, jaki mam, to przewijanie z D-padem i tylko wtedy, gdy jest wyświetlana klawiatura programowa. Poza tym, tak, to rozwiązanie działa, ale błąd nadal istnieje. – greven