New API demo showing different soft input modes.
Change-Id: I2aa53a093df0bd11d9bbe9eb866d2309f113d96d
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index dbcbdab..06aff56 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -148,6 +148,14 @@
</intent-filter>
</activity>
+ <activity android:name=".app.SoftInputModes"
+ android:label="@string/soft_input_modes">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.SAMPLE_CODE" />
+ </intent-filter>
+ </activity>
+
<activity android:name=".app.ReceiveResult" android:label="@string/activity_receive_result">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/samples/ApiDemos/res/layout/soft_input_modes.xml b/samples/ApiDemos/res/layout/soft_input_modes.xml
new file mode 100644
index 0000000..de47bc5
--- /dev/null
+++ b/samples/ApiDemos/res/layout/soft_input_modes.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Demonstrates different soft input modes.
+ See corresponding Java code com.android.sdk.app.SoftInputModes.java. -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent" android:layout_height="match_parent">
+
+ <TextView
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:paddingBottom="4dip"
+ android:textAppearance="?android:textAppearanceMedium"
+ android:text="@string/soft_input_modes_summary"/>
+
+ <LinearLayout android:orientation="horizontal" android:gravity="center"
+ android:layout_width="match_parent" android:layout_height="wrap_content">
+
+ <TextView
+ android:layout_width="wrap_content" android:layout_height="wrap_content"
+ android:textAppearance="?android:textAppearanceMedium"
+ android:text="@string/soft_input_modes_label"/>
+
+ <Spinner android:id="@+id/resize_mode"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:drawSelectorOnTop="true">
+ </Spinner>
+
+ </LinearLayout>
+
+ <TextView
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:paddingBottom="6dip"
+ android:background="@drawable/red"
+ android:textAppearance="?android:textAppearanceMedium"
+ android:text="@string/soft_input_modes_content"/>
+
+ <EditText android:id="@+id/saved"
+ android:layout_width="match_parent" android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:background="@drawable/green"
+ android:text="@string/soft_input_modes_initial_text"
+ android:freezesText="true">
+ <requestFocus />
+ </EditText>
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 81b5a6d..1a28a71 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -68,6 +68,15 @@
<string name="no_saves_state">This text field does not save its state:</string>
<string name="initial_text">Initial text.</string>
+ <string name="soft_input_modes">App/Activity/Soft Input Modes</string>
+ <string name="soft_input_modes_summary">Shows how different soft input modes impact
+ application resizing due to an input method.</string>
+ <string name="soft_input_modes_label">Resize mode: </string>
+ <string name="soft_input_modes_content">This is a part of the application\'s UI that
+ can resize to adjust for the IME.</string>
+ <string name="soft_input_modes_initial_text">Text editor.\n\nTap to show the IME,
+ which will cause this window to resize as requested.</string>
+
<string name="activity_persistent">App/Activity/Persistent State</string>
<string name="persistent_msg">Demonstration of persistent activity state with getPreferences(0).edit() and getPreferences(0).</string>
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/SoftInputModes.java b/samples/ApiDemos/src/com/example/android/apis/app/SoftInputModes.java
new file mode 100644
index 0000000..8c6dcc3
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/SoftInputModes.java
@@ -0,0 +1,67 @@
+package com.example.android.apis.app;
+
+import com.example.android.apis.R;
+
+import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.AdapterView.OnItemSelectedListener;
+
+/**
+ * Demonstrates how the various soft input modes impact window resizing.
+ */
+public class SoftInputModes extends Activity {
+ Spinner mResizeMode;
+ final CharSequence[] mResizeModeLabels = new CharSequence[] {
+ "Unspecified", "Resize", "Pan", "Nothing"
+ };
+ final int[] mResizeModeValues = new int[] {
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED,
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE,
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN,
+ WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING,
+ };
+
+ /**
+ * Initialization of the Activity after it is first created. Here we use
+ * {@link android.app.Activity#setContentView setContentView()} to set up
+ * the Activity's content, and retrieve the EditText widget whose state we
+ * will persistent.
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ // Be sure to call the super class.
+ super.onCreate(savedInstanceState);
+
+ // See assets/res/any/layout/save_restore_state.xml for this
+ // view layout definition, which is being set here as
+ // the content of our screen.
+ setContentView(R.layout.soft_input_modes);
+
+ mResizeMode = (Spinner)findViewById(R.id.resize_mode);
+ ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this,
+ android.R.layout.simple_spinner_item, mResizeModeLabels);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ mResizeMode.setAdapter(adapter);
+ mResizeMode.setSelection(0);
+ mResizeMode.setOnItemSelectedListener(
+ new OnItemSelectedListener() {
+ public void onItemSelected(
+ AdapterView<?> parent, View view, int position, long id) {
+ getWindow().setSoftInputMode(mResizeModeValues[position]);
+ }
+
+ public void onNothingSelected(AdapterView<?> parent) {
+ getWindow().setSoftInputMode(mResizeModeValues[0]);
+ }
+ });
+ }
+}