172 lines
6.0 KiB
Plaintext
172 lines
6.0 KiB
Plaintext
page.title=Specifying the Input Method Type
|
|
|
|
trainingnavtop=true
|
|
|
|
@jd:body
|
|
|
|
<div id="tb-wrapper">
|
|
<div id="tb">
|
|
|
|
<h2>This lesson teaches you to</h2>
|
|
<ol>
|
|
<li><a href="#Type">Specify the Keyboard Type</a></li>
|
|
<li><a href="#Spelling">Enable Spelling Suggestions and Other Behaviors</a></li>
|
|
<li><a href="#Action">Specify the Input Method Action</a></li>
|
|
</ol>
|
|
|
|
<h2>You should also read</h2>
|
|
<ul>
|
|
<li><a href="{@docRoot}guide/topics/ui/controls/text.html">Text Fields</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<p>Every text field expects a certain type of text input, such as an
|
|
email address, phone number, or just plain text. So it's important
|
|
that you specify the input type for each text field in your app
|
|
so the system displays the appropriate soft input method (such as an on-screen keyboard).</p>
|
|
|
|
<p>Beyond the type of buttons available with an input method, you should specify
|
|
behaviors such as whether the input method provides spelling suggestions,
|
|
capitalizes new sentences, and replaces the carriage return button with an
|
|
action button such as a <b>Done</b> or <b>Next</b>.
|
|
This lesson shows how to specify these characteristics.</p>
|
|
|
|
|
|
|
|
<h2 id="Type">Specify the Keyboard Type</h2>
|
|
|
|
<p>You should always declare the input method for your text fields by adding
|
|
the <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType"
|
|
>{@code android:inputType}</a> attribute to the {@link android.widget.EditText
|
|
<EditText>} element.</p>
|
|
|
|
<div class="figure" style="width:300px">
|
|
<img src="{@docRoot}images/ui/edittext-phone.png" alt="" />
|
|
<p class="img-caption"><strong>Figure 1.</strong> The {@code phone} input type.</p>
|
|
</div>
|
|
|
|
<p>For example, if you'd like an input method for entering a phone number,
|
|
use the {@code "phone"} value:</p>
|
|
<pre>
|
|
<EditText
|
|
android:id="@+id/phone"
|
|
android:layout_width="fill_parent"
|
|
android:layout_height="wrap_content"
|
|
android:hint="@string/phone_hint"
|
|
android:inputType="phone" />
|
|
</pre>
|
|
|
|
<div class="figure" style="width:300px">
|
|
<img src="{@docRoot}images/training/input/ime_password.png" alt="" />
|
|
<p class="img-caption"><strong>Figure 2.</strong> The {@code textPassword} input type.</p>
|
|
</div>
|
|
|
|
<p>Or if the text field is for a password, use the {@code "textPassword"} value
|
|
so the text field conceals the user's input:</p>
|
|
<pre>
|
|
<EditText
|
|
android:id="@+id/password"
|
|
android:hint="@string/password_hint"
|
|
android:inputType="textPassword"
|
|
... />
|
|
</pre>
|
|
|
|
<p>There are several possible values documented with the
|
|
<a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType"
|
|
>{@code android:inputType}</a> attribute and
|
|
some of the values can be combined to specify the input method
|
|
appearance and additional behaviors.</p>
|
|
|
|
|
|
|
|
<h2 id="Spelling">Enable Spelling Suggestions and Other Behaviors</h2>
|
|
|
|
<div class="figure" style="width:300px">
|
|
<img src="{@docRoot}images/training/input/ime_autocorrect.png" alt="" />
|
|
<p class="img-caption"><strong>Figure 3.</strong> Adding {@code textAutoCorrect}
|
|
provides auto-correction for misspellings.</p>
|
|
</div>
|
|
|
|
<p>The <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType"
|
|
>{@code android:inputType}</a> attribute allows you to specify various behaviors for the
|
|
input method. Most importantly, if your text field is intended for basic text input (such
|
|
as for a text message), you should enable auto spelling correction with the
|
|
{@code "textAutoCorrect"} value.</p>
|
|
|
|
<p>You can combine different behaviors and input method styles with the
|
|
<a href="{@docRoot}reference/android/widget/TextView.html#attr_android:inputType"
|
|
>{@code android:inputType}</a> attribute. For example,
|
|
here's how to create a text field that capitalizes the first word of a sentence
|
|
and also auto-corrects misspellings:</p>
|
|
|
|
<pre>
|
|
<EditText
|
|
android:id="@+id/message"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:inputType=
|
|
"textCapSentences|textAutoCorrect"
|
|
... />
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h2 id="Action">Specify the Input Method Action</h2>
|
|
|
|
<p>Most soft input methods provide a user action button in the
|
|
bottom corner that's appropriate for the current text field.
|
|
By default, the system uses this button for either a <b>Next</b> or
|
|
<b>Done</b> action unless your text field allows multi-line text (such as with {@code
|
|
android:inputType="textMultiLine"}), in which case the action button is a carriage return.
|
|
However, you can specify additional actions that might be more appropriate for your
|
|
text field, such as <b>Send</b> or <b>Go</b>.</p>
|
|
|
|
<p>To specify the keyboard action button, use the <a
|
|
href="{@docRoot}reference/android/widget/TextView.html#attr_android:imeOptions">{@code
|
|
android:imeOptions}</a> attribute with an action value such as {@code "actionSend"} or
|
|
{@code "actionSearch"}. For example:</p>
|
|
|
|
<div class="figure" style="width:300px">
|
|
<img src="{@docRoot}images/ui/edittext-actionsend.png" alt="" />
|
|
<p class="img-caption"><strong>Figure 4.</strong> The Send button appears when you declare
|
|
{@code android:imeOptions="actionSend"}.</p>
|
|
</div>
|
|
|
|
<pre>
|
|
<EditText
|
|
android:id="@+id/search"
|
|
android:layout_width="fill_parent"
|
|
android:layout_height="wrap_content"
|
|
android:hint="@string/search_hint"
|
|
android:inputType="text"
|
|
android:imeOptions="actionSend" />
|
|
</pre>
|
|
|
|
<p>You can then listen for presses on the action button by defining a
|
|
{@link android.widget.TextView.OnEditorActionListener} for the {@link android.widget.EditText}
|
|
element. In your listener, respond to the appropriate IME action ID defined in the
|
|
{@link android.view.inputmethod.EditorInfo} class, such as
|
|
{@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}. For example:</p>
|
|
|
|
<pre>
|
|
EditText editText = (EditText) findViewById(R.id.search);
|
|
editText.setOnEditorActionListener(new OnEditorActionListener() {
|
|
@Override
|
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
|
boolean handled = false;
|
|
if (actionId == EditorInfo.IME_ACTION_SEND) {
|
|
sendMessage();
|
|
handled = true;
|
|
}
|
|
return handled;
|
|
}
|
|
});
|
|
</pre>
|
|
|
|
|
|
|