2011-06-24 14 views
9

Przed napisaniem tego pytania mam przeczytanie następujących odpowiedzi/artykułów:Android: EditText pozostaje ukryta za klawiaturą

  1. Android soft keyboard covers edittext field
  2. Android keyboard obscures EditText
  3. http://developer.android.com/resources/articles/on-screen-inputs.html
  4. Soft Keyboard Overlapping with EditText Field

Klawiatura programowa Android jest ustawiona domyślnie, aby przesuwać, co znaczy s zachowa wszystkie edytowalne regiony nad klawiaturą. Jednak nie obsługuje on wystarczy. Po uruchomieniu i naciśnięciu editekstu znajdującego się w dolnej części ekranu pojawia się klawiatura i edittext jest przesuwany w górę, ale niewystarczająco, aby móc zobaczyć, co jest w nim wpisywane. Użyłem/próbowałem następujące:

  1. android:windowSoftInputMode="adjustPan" w manifeście działania. To nie miało znaczenia. Próbowałem również wartości adjustUnspecified i adjustResize. Żadne z nich nie działa.

  2. <uses-sdk android:minSdkVersion="3" /> w pliku manifestu. Moja aplikacja jest przeznaczona dla sdk 2.1 i wyżej. Mimo to spróbowałem i nie działałem.

  3. Korzystanie z ScrollView. To też nie działa.

Czy istnieje sposób ręcznego zarządzania intensywnością "panoramowania" klawiatury po naciśnięciu określonego tekstu edycyjnego.

Poniżej znajduje się mój plik xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff">  

    <ImageView 
    android:id="@+id/header" 
    android:layout_width="320dip" 
    android:layout_height="86dip" 
    android:background="@drawable/header_bg"> 
    </ImageView> 

    <ImageView 
    android:layout_width="320dip" 
    android:layout_height="200dip" 
    android:layout_alignParentBottom="true" 
    android:background="@drawable/bg1_btm"> 
    </ImageView> 

     <TextView android:text="Hostname" 
     android:id="@+id/lbl_hostname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/header"/> 

     <TextView android:text="(Current)" 
     android:id="@+id/lbl_hostname_current" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/lbl_hostname" 
     android:layout_below="@id/header" /> 

     <EditText android:text="EditText" 
     android:id="@+id/editText_hostname" 
     android:layout_below="@id/lbl_hostname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:maxLength="25"> 
     </EditText> 

     <TextView android:text="Registration URL" 
     android:id="@+id/lbl_registration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_hostname" /> 

     <TextView android:text="(Current)" 
     android:id="@+id/lbl_registration_current" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_hostname" 
     android:layout_toRightOf="@id/lbl_registration" /> 

     <TextView android:text="http://" 
     android:id="@+id/lbl_url_prefiz" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/lbl_registration" 
     android:paddingTop="10dip" /> 

     <EditText android:text="EditText" 
     android:id="@+id/editText_registration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf ="@id/lbl_url_prefiz" 
     android:layout_below="@id/lbl_registration"> 
     </EditText> 

     <TextView android:text="Chat" 
     android:id="@+id/lbl_chat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_registration"/> 

     <TextView android:text="(Current)" 
     android:id="@+id/lbl_chat_current" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_registration" 
     android:layout_toRightOf="@id/lbl_chat"/> 

     <EditText android:text="EditText" 
     android:id="@+id/editText_chat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/lbl_chat"> 
     </EditText> 

     <TextView android:text="SSID" 
     android:id="@+id/lbl_ssid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_chat" /> 

     <TextView android:text="(Current)" 
     android:id="@+id/lbl_ssid_current" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/editText_chat" 
     android:layout_toRightOf="@id/lbl_ssid" 
     /> 

     <EditText android:text="EditText" 
     android:id="@+id/editText_ssid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/lbl_ssid" 
     android:maxLines="1" 
     android:inputType="text" 
     android:layout_marginBottom="25dip"> 
     </EditText> 

     <Button android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/ButtonSave" 
     android:text="Save" 
     android:layout_below="@id/editText_ssid" 
     android:layout_alignParentLeft="true"> 
     </Button> 

     <Button android:text="Continue" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/ButtonContinue" 
     android:layout_below="@id/editText_ssid" 
     android:layout_alignParentRight="true"> 
     </Button> 

</RelativeLayout> 
+0

Odpowiedź jest w tym poście: http://stackoverflow.com/questions/4559367/soft-keyboard-overlapping-with-edittext-field – kctang

+0

Dzięki. Zrobiłem na razie pracę. Ale sprawdzi to później. – skaneria

+0

Jakieś rozwiązanie tego? – Atmaram

Odpowiedz

7

Spróbuj

android:windowSoftInputMode="adjustResize" 

działało w porządku dla mnie :)

5

spróbuj ustawić twoje wszystkie kontrole układ wysokości i szerokości przy użyciu fill_parent lub match_parent ... zamiast używać zakodowanego wartości ...

również usunąć tę opcję, jeśli używasz to jak to może pchać swoją aplikację w dół ...

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 

nadzieję, że to działa ...

+0

Dzięki. Nie masz już projektu, aby to wypróbować. Jeśli jednak działa ona dla kogokolwiek innego, źle akceptuje to jako odpowiedź. Dzięki za pomoc. – skaneria

+0

@skaneria: spróbuj ... domyślam się, że powinien działać ... –

+0

powoduje, że jest widoczny, ale wyłącza przewijany widok, a górne widoki mają z tym jakiś problem ... – deadfish