Text Fields
Posted yh_android_blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Text Fields相关的知识,希望对你有一定的参考价值。
概述
文本控件允许用户在你的app中打字。它可以是单行的,也可以是多行的。触摸文本控件所占的空间会显示光标并且自动弹出软键盘。除了打字之外,文本控件允许各种其它活动,如文本选择(剪切,复制,黏贴)和由自动完成功能( auto-completion. )提供的数据查询。 通过包含EditText
对象,
在你的布局文件中添加一个文本控件,也可以在你的xml布局文件中添加
<EditText>
元素来添加。
指定软键盘类型
文本控件有许多不同的输入类型,如数字,日期,密码或邮箱地址。输入类型决定了何种字符被允许键入文本内,如果频繁使用字符,可以优化虚拟键盘的布局。 你可以指定软键盘的类型,在EditText
对象中的
android:inputType
属性。例如,如果你想要用户输入的是邮箱地址,你可以使用
textEmailAddress
输入类型:
这里有一些可以在不同情况下使用的输入类型。你可以在<EditText
android:id="@+id/email_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/email_hint"
android:inputType="textEmailAddress" />
android:inputType
.
文件中找到它们。
小技巧:为允许用户输入换行符以输入长字符串,使用
"textMultiLine"
类型。默认,一个
EditText对象是只限制于一行文本的,当它超过一行时将需要滑动查看。
控制其它行为
android:inputType 也允许你指定某些确切的软件盘行为,如是否能够利用所有的新词或者自动拼写和建议。
android:inputType 属性也允许按位组合(用|操作符来连接多个值),这样你就可以一次性 同时指定键盘布局和 一个或多个行为。例如,下面展示的代码可以允许你收集邮箱地址,利用每一个单词,并且禁用文本建议。
详细的行为可以查看<EditText
android:id="@+id/postal_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/postal_address_hint"
android:inputType="textPostalAddress|
textCapWords|
textNoSuggestions" />
android:inputType
文件。
指定键盘操作
除了改变键盘的输入类型,安卓允许你指定一个当用户完成他们的输入时执行的操作。被指定操作的按钮会出现并替代回车键和它要做出的动作,例如“查找”或“发送” 你可以通过设置android:imeOptions
属性来指定操作。例如,这段代码指定了一个Send操作:
如果你并没有明确的指出一个输入动作, 系统会尝试确定是否 之后有包含<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" />
android:focusable的(文本)字段。
如果在这之后找到了任何可聚焦的(文本)字段,系统就会提供一个
actionNext
操作来移出
EditText
,这样用户将可以选择Next来移动到下一个(文本)字段。如果没有,系统提供
"actionDone"
操作。你可以通过设置
android:imeOptions
属性为任何其它的值
来覆盖该操作
,如
"actionSend"
or
"actionSearch"
,或者使用默认的
"actionNone"
行为。
响应操作按钮事件
如果你使用android:imeOptions
属性指定了一个键盘操作(如
"actionSend"
),你可以通过使用
TextView.OnEditorActionListener
. 来监听这个操作事件。
TextView.OnEditorActionListener接口提供了一个回掉函数
onEditorAction()
,用操作ID来标明每一个操作类型,如
IME_ACTION_SEND
or
IME_ACTION_SEARCH
.。
例如,这段代码展示你如何去监听用户点击Send按钮时的事件:
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)
// Send the user message
handled = true;
return handled;
);
设置自定义操作按钮标签
如果键盘太大而不能合理的占用应用下方的空间时(如,当手机设备处于横向时)就会开启全屏。在该模式下(全屏),一个被标记的操作按钮显示在了输入框的旁边。你可以自定义这个按钮上的文本,通过设置android:imeActionLabel
属性。
<EditText
android:id="@+id/launch_codes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_launch_codes"
android:inputType="number"
android:imeActionLabel="@string/launch" />
添加其它键盘标志
另外的一些操作可以通过android:imeOptions
属性指定,你可以添加额外的标志来指定其它键盘行为。所有可用的标志都在文件
android:imeOptions
中列出。
例如,图5展示了如何使系统全屏显示文本字段,当手机处于横向(或屏幕空间受限)。你可以禁用全屏输入模式,通过
android:imeOptions属性的
flagNoExtractUi
值,如图6所示。
提供自动补全建议
如果你想给用户的输入提供一些建议,你可以使用EditText
的子类
AutoCompleteTextView
. 为了实现自动补全,你必须指定一个提供建议文本的适配器。有许多现成的适配器可供使用,取决于数据的来源,如来自于数据库或数组。
下面的一段展示了如何设置
AutoCompleteTextView
从数组中提供建议,使用数组适配器
ArrayAdapter
:
在你的布局中添加AutoCompleteTextView
下面这个布局中仅有一个文本字段<?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" />
- 定义包含所有建议文本的数组。例如,下面有一组在XML资源文件下的定义的数组 (
res/values/strings.xml
),包含国家名。<?xml version="1.0" encoding="utf-8"?>
<resources>
<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>
</resources>
- 在你的
Activity
或Fragment
,使用如下的代码来指定适配器来提高建议。// 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>(以上是关于Text Fields的主要内容,如果未能解决你的问题,请参考以下文章
如何访问用户在 VueJS 的这些 v-text-fields 中输入的数据?
华为OD机试真题 JS 实现发现新词的数量 /新词挖掘2023 Q1 | 100分
Elasticsearch 报错:Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_fi