在我的主活动中有一个RelativeLayout
,它有两个子项:
- 作为背景的
ImageView
- 包含2个片段容器的
LinearLayout
activity_main.xml
<RelativeLayout 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:layout_gravity="bottom"
tools:context="${packageName}.${activityClass}">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:baselineAlignBottom="false"
android:scaleType="fitStart"
android:src="@drawable/bg_image" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="?android:attr/actionBarSize"
android:layout_alignParentBottom="true">
<LinearLayout
android:id="@+id/ContainerA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/ContainerB"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_gray"
android:orientation="vertical" />
</LinearLayout>
</RelativeLayout>
容器 A 显示的是一个不会改变的片段。 然而,容器 B 包含一个随用户点击而改变的片段。
容器 B 有 2 种变化方式:
- 它可以扩展(从大约 70% 的高度到完全高度)。
- 它会更换片段。
容器 B 可以包含的片段之一是一个表单,其中包含 EditText 和其他视图。
我的问题是当键盘打开时无法调整活动的大小。
我在清单文件中设置了 adjustResize
,并且我的主题不是全屏主题(这显然是此问题的原因)。我还尝试编辑视图,添加 ScrollViews
,但绝对没有任何作用。
我为此活动使用的主题是来自 AppCompat
库的深色操作栏的浅色主题。我只编辑了主题以允许覆盖操作栏。这不是问题,因为我已经尝试删除这些编辑,但仍然无济于事。
TL;DR 对于我来说,adjustResize
/ adjustPan
不起作用。我搜索了,尝试了各种解决方案,但什么都没用。我的问题是:在我的情况下,这是什么原因?
更新: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" />
<application ... android:theme="@style/AppTheme">
<activity android:name=".SplashScreenActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:configChanges="keyboardHidden|screenSize" android:label="@string/app_name"
android:screenOrientation="portrait" android:theme="@style/OverlayActionBarTheme"
android:windowSoftInputMode="adjustResize" />
<activity android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity"
android:windowSoftInputMode="adjustResize">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
</application>
</manifest>
更新2:
我创建了一个全新的应用,将我的表单布局添加为主布局,并测试了问题是否出现在布局本身。结果是,在这个新创建的应用中,它似乎不会调整大小。
如上所述,可以在此处找到布局的链接。
更新3:
我设法在新应用程序中通过使用ScrollView
来包围整个布局使其正常工作。由于某种原因,我无法在原始应用程序中复制相同的效果......仍在努力找出原因。