我正尝试在全屏模式下为自定义Android键盘提供修改后的视图。因此,我试图替换提取视图。在文档中我找到了以下方法:setExtractView(View view) - 所以我认为这是一个公共API调用。Android:InputMethodService如何使用setExtractView(View视图)设置视图?
然而,正如你从Android OS源代码中可以看到的那样(它被粘贴在下面),它让我只能访问在com.android.internal。*空间中查看带有id的视图项的视图。否则,我会,当然,会得到一个NullPointerException。
public void setExtractView(View view) {
mExtractFrame.removeAllViews();
mExtractFrame.addView(view, new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mExtractView = view;
if (view != null) {
mExtractEditText = (ExtractEditText)view.findViewById(
com.android.internal.R.id.inputExtractEditText);
mExtractEditText.setIME(this);
mExtractAction = (Button)view.findViewById(
com.android.internal.R.id.inputExtractAction);
if (mExtractAction != null) {
mExtractAccessories = (ViewGroup)view.findViewById(
com.android.internal.R.id.inputExtractAccessories);
}
startExtractingText(false);
} else {
mExtractEditText = null;
mExtractAccessories = null;
mExtractAction = null;
}
}
所以,我想知道,这是一个bug,这种方法是公共API中如果还是不行,我怎么可以创建在com.android.internal ID的自定义视图。*空间?
更新:没关系,刚发现this。稍后检查并报告是否有效。
你有没有得到这个工作? – Samuel 2011-06-02 20:11:59
感谢塞缪尔提醒我。我刚刚发布我的解决方案。 – znq 2011-06-03 09:33:40