2

我有一个自定义类,它扩展了一个DialogFragment. 我遇到了一些有趣的行为。如果EditText是动态添加的,则当聚焦时,SoftInput 键盘不会显示。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    root = new LinearLayout(getActivity());
    root.setOrientation(LinearLayout.VERTICAL);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Button button = new Button(getActivity());
    button.setLayoutParams(params);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            addEditText();
        }
    });

    root.addView(button);

    return new AlertDialog.Builder(getActivity())
        .setView(root)
        .create();
}

private void addEditText() {
    EditText editText = new EditText(getActivity());    
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    editText.setLayoutParams(params);
    root.addView(editText);
}

如果在EditText调用setView一切正常之前添加了。只有在EditText之后添加时才会发生这种情况。 一个简单的解决方法是向EditText根视图添加一个并将其可见性设置为“消失”。 在此之后,所有其他动态添加EditText的 ' 将正常工作。

我的问题是:这是 Android 系统中的错误吗? 或者是否有某种原因我忽略了这种情况。

注意:解决方法有效,但需要一些时间才能找到,而且感觉就像一个错误。

4

0 回答 0