Android:InputMethodService如何使用setExtractView(View view)设置视图?

时间:2010-10-26 18:13:14

标签: android view input keyboard

我正在尝试在全屏模式下为自定义Android键盘提供修改后的视图。因此,我正在尝试替换提取视图。在文档中,我发现了以下方法:setExtractView(View view) - 所以我假设它是一个公共API调用。

但是,正如您可以从Android操作系统源代码中看到的那样(剪下来粘贴),我只能访问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;
    }
}

所以,我想知道,这是一个错误,这个方法是在公共API中,如果没有,我如何在com.android.internal。* space中创建一个带ID的自定义视图?


更新:没关系,刚找到this。稍后会检查并报告它是否有效。

1 个答案:

答案 0 :(得分:1)

有点晚了,但仍然在这里答案(感谢塞缪尔为我打电话)。解决方案实际上非常简单:

ExtractEditText extractEditTextView = new ExtractEditText(this);
extractEditTextView.setId(android.R.id.inputExtractEditText);