我有一个自定义的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中使用适配器时不显示所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)