这是我在这里的第一个问题,经过2个小时的搜索,我找不到一篇类似的帖子。
问题是我有一个带有工具栏(v7支持工具栏)和导航抽屉的活动。一切都很完美。主要活动有一个片段容器,我在其中放置不同的片段(通过导航抽屉)。在我将一个EditText添加到片段之前,一切都运行良好。当我选择EditText输入一些文本时,显示软键盘并且工具栏调整大小,直到底部与软键盘对齐(实际高度增加),我还不能发布图像所以我希望这个足够详细。未选择输入的片段正常显示。 EditText实际上位于softKeyboard下面(至少可以在那里看到选择指示符。)
这是来自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值。这部分地解决了工具栏保持相同高度但工具栏内的图标消失的问题,并且在我看来硬编码通常正常工作的高度不是正确的解决方案。
答案 0 :(得分:3)
您在此处看到的问题与工具栏中的android:fitSystemWindows="true"
属性有关。
看看Android appcompat toolbar stretches when searchview gets focus。看来如果您使用该属性,父视图也应该设置android:fitSystemWindows="true"
。