In my main activity there is a RelativeLayout
that has 2 childs:
- An
ImageView
which serves as the background
- A
LinearLayout
that has 2 fragment containers
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>
Container A simply shows a fragment that doesn't change.
However, Container B holds a fragment that does change depending on user clicks.
Container B changes in 2 ways:
- It can expand (from a height of about 70% to full height).
- It changes fragments.
One of the fragments Container B can hold is a form, which contains EditText
s and other views.
My problem is that I can't get the activity to resize when the keyboard is open.
I set adjustResize
in the manifest file and my theme is not a fullscreen theme (it is apparently a cause for this problem). I also tried to edit the views, add ScrollViews
but absolutely nothing worked.
The theme I'm using for this activity is the light theme with the dark actionbar from the AppCompat
library. I only edited the theme to allow an overlay actionbar. This is not the problem as I've already tried removing those edits to no avail.
Here's a link to the form layout
TL;DR adjustResize
/ adjustPan
do not work for me. Searched, tried various solutions, nothing worked. My question is; what is the cause for this in my case?
Update: 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>
Update 2:
I created a completely new app, added my form layout as the main layout, and tested whether the problem was in the layout itself. Turns out it is, as even on this newly created app it doesn't seem to resize.
As stated above, the link to the layout can be found Here
Update 3:
I managed to make it work on the new application by surrounding the whole layout with a ScrollView
. I couldn't replicate the same effect in the original app for some reason... still trying to figure out why.
See Question&Answers more detail:
os