我正在尝试从启动键盘的View
中访问某些属性。例如,如果我的应用程序具有以下视图:
<EditText
android:contentDescription="content description"
android:privateImeOptions="private ime options" />
我可以像这样从我的privateImeOptions
访问InputMethodService
:
@Override
public void onStartInputView(EditorInfo info, boolean restarting) {
final String privateImeOptions = info.privateImeOptions;
}
但是我无法以相同的方式访问contentDescription
属性。
是否可以读取启动IME的contentDescription
的特定属性,例如View
?我只需要对该属性进行读取访问,就不需要更改它。
对此的简短回答是“否,无法从InputMethodService
访问属性
但是,有一种解决方案使用AccessibilityService
读取View
属性,然后将此信息传递给InputMethodService
。
无法确认键盘和辅助功能视图是否匹配,但是您可以假定焦点所在的视图是启动键盘的视图。要通过可访问性服务集中查看视图,可以使用
final AccessibilityNodeInfo focusedView = findFocus(AccessibilityNodeInfo.FOCUS_INPUT);
对于大多数情况而言,这可能不是理想的解决方案,但我想将其记录给将来可能会有用的任何其他人