Это мой первый вопрос здесь, после 2 часов поиска подобного случая я не смог найти ни одного для этого поста.
Проблема в том, что у меня есть действие с панелью инструментов (панель инструментов поддержки v7) и навигационным ящиком. Это все работает отлично. Основное действие имеет контейнер фрагментов, куда я помещаю разные фрагменты (через панель навигации). Все работало отлично, пока я не добавил EditText к фрагменту. Когда я выбираю EditText для ввода текста, отображается программная клавиатура, а размер панели инструментов изменяется до тех пор, пока нижняя часть не будет выровнена с программной клавиатурой (фактическая высота увеличивается), я пока не могу публиковать изображения, поэтому я надеюсь, что это достаточно подробно. Фрагмент без выбранного входа отображается нормально. EditText на самом деле находится под программной клавиатурой (по крайней мере, там можно увидеть индикатор выбора).
это файл макета из mainactivity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/main_color_500">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:orientation="vertical"
tools:context="com.joost.smartplanner.MainFragmentActivity">
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/main_color_500"
android:fitsSystemWindows="true"
android:elevation="4dp"
android:id="@id/app_bar"
app:theme="@style/CustomToolbarStyle">
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/mainFragmentContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/grey_100"
android:padding="@dimen/zero_padding"
android:gravity="top"
android:orientation="horizontal"
android:focusable="true">
</FrameLayout>
</LinearLayout>
<fragment
android:id="@+id/fragment_navigation_drawer"
android:layout_width="@dimen/nav_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"
android:name="com.joost.smartplanner.NavigationDrawerFragment" />
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
Фрагмент, содержащий editText:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fragment_bg_white"
android:focusable="true"
tools:context="com.joost.smartplanner.CreateEventFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/create_event_scrollview">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"/>
<!-- Event name part -->
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:imeOptions="flagNoExtractUi"
android:hint="Event name"
android:padding="8dp"
android:ems="8"
android:focusable="true"
android:clickable="true"
android:id="@+id/editText" />
</LinearLayout>
</ScrollView>
</LinearLayout>
И, наконец, код запуска панели инструментов в MainActivity onCreate:
//Toolbar initiation
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
getSupportActionBar().setTitle("");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
}
});
toolbar.inflateMenu(R.menu.menu_main);
Одна вещь, которую я пытался решить, это установить фиксированную высоту для панели инструментов вместо значения wrap_content. Это частично устраняет проблему, при которой панель инструментов остается на той же высоте, но значки внутри панели инструментов исчезают, и, на мой взгляд, жесткое кодирование высоты, которая обычно работает нормально, не является правильным решением.