我有一个扩展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系统中的错误吗?或者是否有一些原因让我忽略了这一点。
注意:解决方法有效,但需要一些时间才能找到,而且感觉就像是一个错误。