Подтвердить что ты не робот

Проблемы с EditText и мягкой клавиатурой в фрагменте

В настоящее время я создаю приложение для Android, которое позволяет пользователям делать снимки и записывать их детали. Приложение использует библиотеки Шерлока.

Я внедрил SherlockFragment для отображения изображения и нескольких EditText и TextView, чтобы пользователи могли вводить информацию об изображении. Однако, когда один из EditText находится в фокусе, все поля выдвигаются вверх, и появляется мягкая клавиатура.

Вот мой макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="#FFFFFF">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="200dip"
        android:layout_above="@+id/textView"
        android:layout_marginTop="20dip"
        android:layout_marginBottom="20dip"
        android:contentDescription="desc" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Title:"
        android:textStyle="bold"
        android:layout_above="@+id/editTextSimple" 
        android:layout_marginBottom="2dip"
        android:textSize="15sp"/>

     <EditText
        android:id="@+id/editTextSimple"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView1"
        android:layout_marginBottom="4dip">
        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Description:"
        android:textStyle="bold"
        android:layout_above="@+id/editTextSimple1" 
        android:layout_marginBottom="2dip"
        android:textSize="15sp"/>

    <EditText
        android:id="@+id/editTextSimple1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView2"  
        android:layout_marginBottom="12dip">
    </EditText>

    <Button android:textColor="#FF000000" 
        android:id="@+id/submitButton" 
        android:text="@string/memorySubmit" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="24dip"
        android:onClick = "submit"/>
</RelativeLayout>

Из того, что я понимаю, в действии, нужно разместить этот <activity android:windowSoftInputMode="...." > в манифесте Android, чтобы настроить просмотр при вызове мягкой клавиатуры. Однако, как мы устанавливаем это для фрагментов?

4b9b3361

Ответ 1

это сработало для меня в сценарии, когда я использовал несколько макетов и viewstub для создания экрана обмена сообщениями. Поместите это в onCreate() Надеемся, что это поможет.

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Ответ 2

Все фрагменты одного Activity имеют такое же поведение, что и их родительский Activity, но если вам нужно различное поведение клавиатуры для разных Fragments, вы можете динамически изменить это свойство из вашего кода Fragment следующим образом:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.softInputMode.SOFT_INPUT_ADJUST_PAN);

Надеюсь, это поможет!

Ответ 3

Это можно использовать в классе фрагментов для перемещения Редактировать текст вверх и прокрутка до конца.

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Ответ 4

попробуйте getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Ответ 5

У меня также эта проблема возникает в моем проекте, я разработал свой проект, используя фрагменты и вкладки,

Если мы берем относительную компоновку и сохраняем выше и ниже зависимость и, наконец, кнопку с

Android: layout_alignParentBottom = "истина"

то это вызовет проблему. Решение принимает ScrollView внутри корня Linear или Relative Layout, а внутри ScrollView принимает одно дочернее представление как Linear или Relative и задает все представления ниже друг друга в RelativeLayout (если принято относительное в дочернем представлении) или нет необходимости устанавливать зависимость в Linear.

Что он, он будет работать...:)

Ответ 6

android:windowSoftInputMode="adjustPan"

Все фрагменты, относящиеся к этой активности, ведут себя одинаково, если вы хотите изменить поведение перкулярного фрагмента, чем использовать следующий

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Ответ 7

   android:launchMode="singleTask"
   android:windowSoftInputMode="adjustPan"

это изменение в манифесте отлично работает для меня