Проблемы с 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, чтобы настроить просмотр при вызове мягкой клавиатуры. Однако, как мы устанавливаем это для фрагментов?
Ответы
Ответ 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"
это изменение в манифесте отлично работает для меня