从InputMethodService访问所有视图属性

问题描述 投票:0回答:1

我正在尝试从启动键盘的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?我只需要对该属性进行读取访问,就不需要更改它。

android ime
1个回答
0
投票

对此的简短回答是“否,无法从InputMethodService访问属性

但是,有一种解决方案使用AccessibilityService读取View属性,然后将此信息传递给InputMethodService

无法确认键盘和辅助功能视图是否匹配,但是您可以假定焦点所在的视图是启动键盘的视图。要通过可访问性服务集中查看视图,可以使用

final AccessibilityNodeInfo focusedView = findFocus(AccessibilityNodeInfo.FOCUS_INPUT);

对于大多数情况而言,这可能不是理想的解决方案,但我想将其记录给将来可能会有用的任何其他人

© www.soinside.com 2019 - 2024. All rights reserved.