习以为常的键盘——不简单

inputType

EditText中inputType指明了弹出键盘的类型,这里使用几张图片来说明一下

<EditText  android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="inputType: textEmailAddress" android:inputType="textEmailAddress" />
  • inputType:textEmailAddress

  • inputType:text

习以为常的键盘——不简单_第1张图片

  • inputType:textUrl

习以为常的键盘——不简单_第2张图片

  • inputType:number

  • inputType:phone

习以为常的键盘——不简单_第3张图片

在键盘上显示”Search”/”Send”

这里是通过设置EditText的 android:imeOptions属性实现的。

  • imeOptions:actionSend

习以为常的键盘——不简单_第4张图片

  • imeOptions:actionSearch

习以为常的键盘——不简单_第5张图片

  • imeOptions:actionNext

习以为常的键盘——不简单_第6张图片

  • imeOptions: actionDone

习以为常的键盘——不简单_第7张图片

  • imeOptions:actionNone

习以为常的键盘——不简单_第8张图片

给Search按钮添加响应事件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" >
    <EditText  android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="text" android:imeOptions="actionSend" />
</LinearLayout>

这里发现一个奇怪的现象,如果没有inputType,imeOptions不会显示为send字样。

package com.example.testandroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TextView.OnEditorActionListener;

public class MainActivity extends Activity {
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
        EditText editText = (EditText) findViewById(R.id.search);
        editText.setOnEditorActionListener(new OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId,
                    KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_SEND) {
                    Toast.makeText(MainActivity.this,
                            "you pressed search button~ ", Toast.LENGTH_LONG)
                            .show();
                }
                return true;
            }
        });
    }
}

android:imeOptions=”flagNoExtractUi”

这样就可以在横屏时,将输入框右侧的按钮干掉了

习以为常的键盘——不简单_第9张图片

AutoCompleteTextView.setThreshold 默认为2

  • 布局文件
<?xml version="1.0" encoding="utf-8"?>
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" />
  • 资源文件
<string-array name="countries_array">
        <item>Afghanistan</item>
        <item>Albania</item>
        <item>Algeria</item>
        <item>American Samoa</item>
        <item>Andorra</item>
        <item>Angola</item>
        <item>Anguilla</item>
        <item>Antarctica</item>
    </string-array>
  • Java代码
package com.example.testandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_main);
        // Get a reference to the AutoCompleteTextView in the layout
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
        // Get the string array
        String[] countries = getResources().getStringArray(
                R.array.countries_array);
        // Create the adapter and set it to the AutoCompleteTextView
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, countries);
//这里默认为2
        textView.setThreshold(1);
        textView.setAdapter(adapter);
    }
}
  • 不设置setThreshold,时输入第一个字符

  • 输入第二个字符

  • 设置之后,输入第一个字符

习以为常的键盘——不简单_第10张图片

翻译地址

https://developer.android.com/guide/topics/ui/controls/text.html#Flags

你可能感兴趣的:(EditText,keyboard)