android– 软键盘在DialogFragment中使用适配器时不显示

android– 软键盘在DialogFragment中使用适配器时不显示,第1张

概述我有一个自定义的DialogFragment,里面有一个ArrayAdapter,里面有一些editTexts.显示对话框时,即使我按下编辑文本,也不会出现软键盘.编辑文本确实需要重点,但键盘永远不会出现.如果我不使用适配器,只使用带有编辑文本的视图,它可以很好地工作,但只要我添加适配器,我就会遇到问题.

我有一个自定义的DialogFragment,里面有一个ArrayAdapter,里面有一些editTexts.显示对话框时,即使我按下编辑文本,也不会出现软键盘.编辑文本确实需要重点,但键盘永远不会出现.

如果我不使用适配器,只使用带有编辑文本的视图,它可以很好地工作,但只要我添加适配器,我就会遇到问题.

我的代码如下.任何帮助将非常感激.

提前致谢.

public class ParameterDialog extends DialogFragment {Context context;@OverrIDepublic Dialog onCreateDialog(Bundle savedInstanceState) {    ArrayList<Parameter> params = this.getArguments().getParcelableArrayList(MainActivity.KEY_ParaMS_TO_DIALOG);    String name = this.getArguments().getString(MainActivity.KEY_name_TO_DIALOG);    context = getActivity();    // Use the Builder class for convenIEnt dialog construction    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());    ParameterDialogAdapter pda = new ParameterDialogAdapter(context,R.layout.parameter_config_string , params);    // Inflate and set the layout for the dialog    // Pass null as the parent vIEw because its going in the dialog layout    builder            .setTitle(name)            .setAdapter(pda,null)            .setPositivebutton("Send", new DialogInterface.OnClickListener() {                public voID onClick(DialogInterface dialog, int ID) {                }            })            .setNegativebutton(androID.R.string.cancel, new DialogInterface.OnClickListener() {                public voID onClick(DialogInterface dialog, int ID) {                }            });    // Create the AlertDialog object and return it    return builder.create();}}

public class ParameterDialogAdapter extends ArrayAdapter<Parameter> {Context context;int layoutResourceID;ArrayList<Parameter> data= null;public ParameterDialogAdapter(Context context, int layoutResourceID, ArrayList<Parameter> data) {    super(context, layoutResourceID, data);    this.layoutResourceID = layoutResourceID;    this.context = context;    this.data = data;}@OverrIDepublic VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {    VIEw row = convertVIEw;    //ParameterHolder holder = null;    final LayoutInflater inflater = ((Activity)context).getLayoutInflater();    final int p =position;    row = inflater.inflate(layoutResourceID, parent, false);    return row;}}

-布局

<linearLayoutandroID:orIEntation="horizontal"androID:layout_wIDth="fill_parent"androID:layout_height="wrap_content"xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:ID="@+ID/paramValueHolder"androID:paddingRight="10dp"androID:paddingleft="10dp"androID:paddingBottom="5dp"><EditText    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:ID="@+ID/paramValue"    androID:hint="Value"    androID:textcolor="@color/text_grey" />

– 显示对话框

ParameterDialog pDialog = new ParameterDialog ();        Bundle bundle = new Bundle();        bundle.putString(KEY_name_TO_DIALOG,action.getname());        bundle.putParcelableArrayList(KEY_ParaMS_TO_DIALOG, params);        pDialog.setArguments(bundle);        pDialog.setArguments(bundle);        pDialog.show(ft, "parameter_dialog");

解决方法:

我在使用包含ListVIEw的FragmentDialog时遇到了类似的问题. ListVIEw中的项目包含没有调出软键盘的EditText小部件.

我发现的一种解决方法是在FragmentDialog的根布局中放置一个不可见的EditText.

例如:

List_layout.xml:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:orIEntation="vertical"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <ListVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="0dp"        androID:layout_weight="1"        androID:ID="@androID:ID/List"/>    <EditText        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:visibility="gone" /></linearLayout>

DialogFragment创建视图如下:

@OverrIDepublic Dialog onCreateDialog(Bundle savedInstanceState){    LayoutInflater inflater = getActivity().getLayoutInflater();    VIEw ListLayout = inflater.inflate(R.layout.List_layout, null);    mListVIEw = (ListVIEw) ListLayout.findVIEwByID(androID.R.ID.List);    return new AlertDialog.Builder(getActivity()).setVIEw(ListLayout).create();}@OverrIDepublic voID onActivityCreated(@Nullable Bundle savedInstanceState){    super.onActivityCreated(savedInstanceState);    //set adapter    mListVIEw.setAdapter(mlistadapter);}

希望这可以帮助

总结

以上是内存溢出为你收集整理的android – 软键盘在DialogFragment中使用适配器时不显示全部内容,希望文章能够帮你解决android – 软键盘在DialogFragment中使用适配器时不显示所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存