Android: EditText остается скрытым за клавиатурой - PullRequest
11 голосов
/ 25 июня 2011

Прежде чем написать этот вопрос, я прочитал следующие ответы / статьи:

  1. Программная клавиатура Android покрывает поле edittext
  2. Клавиатура Android скрывает EditText
  3. http://developer.android.com/resources/articles/on-screen-inputs.html
  4. Перекрытие программной клавиатуры с полем EditText

Программная клавиатура Android по умолчанию настроена на панорамирование, что означает, что она будет держать все редактируемые области над клавиатурой. Однако это не панорамирование достаточно . Когда я запускаю его и нажимаю текст редактирования, расположенный ближе к нижней части экрана, появляется клавиатура, и текст редактирования перемещается вверх, но его недостаточно, чтобы можно было увидеть, что в нем набирается. Я использовал / попробовал следующее:

  1. android:windowSoftInputMode="adjustPan" в манифесте Деятельности. Это не имеет значения. Я также попытался поставить значения adjustUnspecified и adjustResize тоже. Ни один из них не работает.

  2. <uses-sdk android:minSdkVersion="3" /> в файле манифеста. Мое приложение предназначено для SDK 2.1 и выше. Хотя я попробовал и не получилось.

  3. Использование ScrollView. Также не работает.

Есть ли способ вручную управлять тем, сколько "панорамирования" делает клавиатура, когда нажимается определенный текст редактирования.

Ниже мой 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>

Ответы [ 2 ]

8 голосов
/ 11 декабря 2014

Попробуйте

android:windowSoftInputMode="adjustResize"  

отлично сработало для меня:)

5 голосов
/ 09 апреля 2013

Попробуйте установить высоту и ширину макета всех элементов управления, используя fill_parent или match_parent ... вместо использования жестко закодированных значений ...

также удалите это, если вы используете это, так как это может толкать ваше приложениевниз ...

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

надеюсь, что это работает ...

...