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