public class EditorInfo
extends Object
implements InputType, Parcelable
java.lang.Object | |
↳ | android.view.inputmethod.EditorInfo |
EditorInfo描述输入方法与之通信的文本编辑对象的几个属性(通常是EditText),最重要的是它包含的文本内容的类型以及当前的光标位置。
Inherited constants |
---|
From interface android.text.InputType
|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<EditorInfo> |
CREATOR 用于使这个类可以分类。 |
public int |
actionId 如果已经给出了 |
public CharSequence |
actionLabel 在某些情况下,IME可能能够显示用户可以执行的命令的任意标签,您可以在此指定它。 |
public Bundle |
extras 任何额外的数据提供给输入法。 |
public int |
fieldId 编辑器字段的标识符。 |
public String |
fieldName 编辑者字段的附加名称。 |
public LocaleList |
hintLocales 无论当前使用哪种输入法子类型,用户应该切换到的语言列表。 |
public CharSequence |
hintText 文本视图的“提示”文本,通常在文本为空时以内联方式显示,以告知用户要输入的内容。 |
public int |
imeOptions 编辑器的扩展类型信息,以帮助IME更好地与其集成。 |
public int |
initialCapsMode 正文中正在编辑的第一个字符的大小写模式。 |
public int |
initialSelEnd 编辑开始时选择结束的文本偏移量; -1如果不知道。 |
public int |
initialSelStart 编辑开始时选择开始的文本偏移量; -1如果不知道。 |
public int |
inputType 文本框的内容类型,其位数由 |
public CharSequence |
label 向用户显示描述他们正在撰写的文本的标签。 |
public String |
packageName 拥有此编辑器的软件包的名称。 |
public String |
privateImeOptions 一个字符串,用于提供特定IME实现专用的附加信息选项。 |
Public constructors |
|
---|---|
EditorInfo() |
Public methods |
|
---|---|
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
void |
dump(Printer pw, String prefix) 编写该对象的调试输出。 |
final void |
makeCompatible(int targetSdkVersion) 确保此EditorInfo中的数据与针对给定目标API版本开发的应用程序兼容。 |
void |
writeToParcel(Parcel dest, int flags) 用于将该对象打包成 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
int IME_ACTION_DONE
IME_MASK_ACTION
位:操作键执行“完成”操作,通常意味着没有其他要输入的内容并且IME将被关闭。
常数值:6(0x00000006)
int IME_ACTION_GO
IME_MASK_ACTION
位:操作键执行“执行”操作,将用户带到他们键入的文本的目标。 例如,通常在输入URL时使用。
常量值:2(0x00000002)
int IME_ACTION_NEXT
IME_MASK_ACTION
位:操作键执行“下一步”操作,将用户带到接受文本的下一个字段。
常量值:5(0x00000005)
int IME_ACTION_NONE
IME_MASK_ACTION
比特:没有可用的操作。
常数值:1(0x00000001)
int IME_ACTION_PREVIOUS
IME_MASK_ACTION
:类似于IME_ACTION_NEXT
,但是用于移至前一个字段。 这通常不会用于指定操作(因为它排除了IME_ACTION_NEXT
),但如果设置为IME_FLAG_NAVIGATE_PREVIOUS
,则可以将其返回到应用程序。
常量值:7(0x00000007)
int IME_ACTION_SEARCH
IME_MASK_ACTION
位:操作键执行“搜索”操作,让用户搜索他们键入的文本(无论上下文是否合适)的搜索结果。
常量值:3(0x00000003)
int IME_ACTION_SEND
IME_MASK_ACTION
位:操作键执行“发送”操作,将文本传送到其目标。 在立即发送即时消息或SMS中编写消息时通常会使用此功能。
常量值:4(0x00000004)
int IME_ACTION_UNSPECIFIED
IME_MASK_ACTION
位:此编辑器没有具体的操作,编辑器可以自行编辑。
常量值:0(0x00000000)
int IME_FLAG_FORCE_ASCII
imeOptions
标志:用于请求能够输入ASCII字符的IME。 该标志的用意是确保用户可以输入TextView
罗马字母字符。 它通常用于帐户ID或密码输入。 很多时候,即使没有被告知,IME已经能够输入ASCII(这种IME已经在某种意义上尊重了这个标志),但是在某些情况下,这不是默认设置。 例如,使用不同脚本(如阿拉伯语,希腊语,希伯来语或俄语)的语言的用户通常会使用键盘,默认情况下不能输入ASCII字符。 应用程序需要意识到该标志不是保证,并且一些IME可能不尊重它。 但是,强烈建议IME作者尊重此标志,特别是在其IME最终可能处于仅启用使用非ASCII语言的状态时。
常量值:-2147483648(0x80000000)
int IME_FLAG_NAVIGATE_NEXT
imeOptions
标志:用于指定前向导航可以关注的某些有趣内容。 这就像使用IME_ACTION_NEXT
,除了允许IME为多行(带有回车键)以及提供前向导航之外。 请注意,有些IME可能无法做到这一点,特别是在小空间屏幕上运行时。 在这种情况下,它不需要为此选项提供UI。 像IME_ACTION_NEXT
一样,如果用户选择IME的工具来转发导航,这将显示在应用程序InputConnection.performEditorAction(int)
。
常量值:134217728(0x08000000)
int IME_FLAG_NAVIGATE_PREVIOUS
imeOptions
标志:与IME_FLAG_NAVIGATE_NEXT
一样,但指定了一些有趣的事情,即向后导航可以关注。 如果用户选择IME的设施向后导航,这将在应用程序中显示为IME_ACTION_PREVIOUS
, InputConnection.performEditorAction(int)
为InputConnection.performEditorAction(int)
。
常量值:67108864(0x04000000)
int IME_FLAG_NO_ACCESSORY_ACTION
标记imeOptions
:与被IME_MASK_ACTION
屏蔽的操作之一结合使用时,表示当输入方法为全屏时,该操作不应作为提取文本右侧的附件按钮。 请注意,通过设置此标志,可能会出现用户根本无法使用该操作的情况。 设置这通常意味着你认为在全屏模式下,没有足够的空间显示文本,不值得花一些屏幕空间来显示动作,而应该使用它来显示更多文本。
常量值:536870912(0x20000000)
int IME_FLAG_NO_ENTER_ACTION
imeOptions
标志:与被IME_MASK_ACTION
屏蔽的其中一项操作一起使用。 如果此标志未设置,则IME通常会使用所提供的操作替换“输入”键。 该标志表示该行为不应该作为“输入”键的替代品在线提供。 通常这是因为该行为具有如此显着的影响,或者不可恢复,以至于应该避免意外触碰它,例如发送消息。 请注意, TextView
会在多行文本视图中为您自动设置此标志。
常量值:1073741824(0x40000000)
int IME_FLAG_NO_EXTRACT_UI
imeOptions
标志:用于指定IME不需要显示其提取的文本UI。 对于可能全屏显示的输入法,通常在横向模式下,这可以通过全屏幕IME中的透明UI部分使它们更小,并让部分应用程序显示在后面。 用户可见的UI部分可能无法响应触摸,因为IME将接收触摸事件,这可能会混淆用户; 改用IME_FLAG_NO_FULLSCREEN
代替更好的体验。 不鼓励使用此标志,将来可能会被弃用。 它的含义在某些情况下还不清楚,并且可能无法在老版本的平台上正常工作。
常量值:268435456(0x10000000)
int IME_FLAG_NO_FULLSCREEN
imeOptions
标志:用于请求IME永远不会进入全屏模式。 默认情况下,IME可能会进入全屏模式,如果他们认为合适,例如在横向小屏幕中,显示软件键盘的屏幕可能会遮挡大部分屏幕,其余部分太小而不能有意义地显示应用程序UI。 如果设置了此标志,则兼容的IME将永远不会进入全屏模式,并且始终留出一些空间来显示应用程序UI。 应用程序需要知道该标志不是保证,并且一些IME可能会忽略它。
常量值:33554432(0x02000000)
int IME_MASK_ACTION
imeOptions
中提供与“输入”键相关的替代操作的位集。 这两方面都有助于IME提供有关输入密钥的更好反馈,并允许它提供用于提供该命令的备用机制。
常量值:255(0x000000ff)
int actionId
如果已经给出了 actionLabel
,那么当用户按下用 InputConnection.performEditorAction()
返回的按钮时,这是该命令的 InputConnection.performEditorAction()
。
CharSequence actionLabel
在某些情况下,IME可能能够显示用户可以执行的命令的任意标签,您可以在此指定它。 这通常用作动作的标签,用于actionId
使用以代替“输入”键(请参阅actionId
)。 记住这个显示的关键通常是非常小的,并且在适用于所有支持的语言方面存在重大的本地化挑战。 你也不能完全依靠这个被使用的数据,因为一些IME可能会忽略这个。
Bundle extras
任何额外的数据提供给输入法。 这是为了与特定的输入方法进行扩展通信; 包中的名称字段应该是有限的(例如“com.mydomain.im.SOME_FIELD”),以便它们不与其他人发生冲突。 该字段可以从TextView的editorExtras
属性中填充。
LocaleList hintLocales
无论当前使用哪种输入法子类型,用户应该切换到的语言列表。 这种特殊的“提示”可以主要用于但不限于希望IME自动切换语言上下文的多语言用户。
null
意味着不需要特殊语言“提示”。
编辑器作者:只有在确信用户将在此上下文中切换到某些语言时指定此选项,无论当前选择了哪种输入法子类型。 否则,保持这个null
。 明确的用户操作和/或首选项将是指定此特殊“提示”的良好信号。例如,聊天应用程序可能能够基于用户将要与谁谈话的最后使用最后使用的语言在hintLocales
,记住上次对话中使用的语言。 不要仅指定getTextLocales()
因为它用于文本呈现。
int initialCapsMode
正文中正在编辑的第一个字符的大小写模式。 值可以是任意组合TextUtils.CAP_MODE_CHARACTERS
, TextUtils.CAP_MODE_WORDS
,并TextUtils.CAP_MODE_SENTENCES
,虽然你通常应该只取一非零值指“在大写模式开始了”。
int initialSelEnd
编辑开始时选择结束的文本偏移量; -1如果不知道。 请记住,在不知道光标位置的情况下,很多IME将无法提供完整的功能集,并且可能会以不可预知的方式运行:如果可能,则传递实际的光标位置。
此外,即使输入是在与之前相同的文本字段中开始的,它现在也需要是光标位置,而不是过去的某个时间点。 当应用程序填充此对象时,输入即将按照定义开始,并且此值将覆盖应用程序以前可能传递给updateSelection(android.view.View, int, int, int, int)
任何值。
int initialSelStart
编辑开始时选择开始的文本偏移量; -1如果不知道。 请记住,在不知道光标位置的情况下,很多IME将无法提供完整的功能集,甚至可能会以不可预知的方式运行:如果可能,则传递实际的光标位置。
此外,即使输入是在与之前相同的文本字段中开始的,它现在也需要是光标位置,而不是过去的某个时间点。 当应用程序填充此对象时,输入将按定义开始,并且此值将覆盖应用程序之前可能已传递至updateSelection(android.view.View, int, int, int, int)
任何值。
String packageName
拥有此编辑器的软件包的名称。
IME作者:在API级别22 LOLLIPOP_MR1
及之前,不要相信此软件包名称。 系统没有验证包名和应用程序的uid之间的一致性。 考虑使用getUid()
。 从M
开始,系统将EditorInfo
传递给输入方法之前,验证此包名和应用程序uid之间的一致性。
编辑器作者:从 M
开始,如果此处提供的包名称与应用程序的uid不一致,则应用程序不再能够建立输入连接。
String privateImeOptions
一个字符串,用于提供特定IME实现专用的附加信息选项。 字符串的范围必须是实现所拥有的包,以确保实现之间不存在冲突,但除此之外,您可以将任何想要的内容与IME进行通信。 例如,你可以有一个提供像"com.example.myapp.SpecialMode=3"
这样的参数的字符串。 该字段可以从TextView的privateImeOptions
属性中填写。
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
void dump (Printer pw, String prefix)
编写该对象的调试输出。
Parameters | |
---|---|
pw |
Printer
|
prefix |
String
|
void makeCompatible (int targetSdkVersion)
确保此EditorInfo中的数据与针对给定目标API版本开发的应用程序兼容。 这会影响下面的输入类型: TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS
, TYPE_TEXT_VARIATION_WEB_PASSWORD
, TYPE_NUMBER_VARIATION_NORMAL
, TYPE_NUMBER_VARIATION_PASSWORD
。
这由输入方法实现的框架调用; 你通常不需要自己打电话。
Parameters | |
---|---|
targetSdkVersion |
int : The API version number that the compatible application was developed against. |
void writeToParcel (Parcel dest, int flags)
用于将此对象打包成 Parcel
。
Parameters | |
---|---|
dest |
Parcel : The Parcel to be written. |
flags |
int : The flags used for parceling. |