Spinner在Dialog中的使用效果实例代码详解

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Spinner在Dialog中的使用效果实例代码详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

背景:

记得很久以前,碰到一个需求场景,需要在AndROId DiaLOG中显示Spinner,用来进行选择操作。那个时候还很困惑,不知道是否可以这么搞。抱着试试看的心态,做起了实验,看起来效果还可行,不过最终还是选用了一个开项目,效果看起来更棒。

代码演示:

Spinner在Dialog中的使用,Dialog中关于view的XMl布局。

 <&#63;xML version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.COM/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  android:padding="16dp">  <Spinner   android:id="@+id/spinner"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:layout_marginBottom="2dp" />  <EdITText   android:id="@+id/edit"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:padding="8dp" /> </LinearLayout>

dialog初始化,加载,显示出来的完整代码(包含对Spinner进行Adapter设置)。

 PRivate void showAlertDialog() {  View view = LayoutInflater.From(this).inflate(R.layout.dialog_add_noteBook, null);  Spinner spinner = view.findViewById(R.id.spinner);  ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, R.layout.simple_spinner_item, android.R.id.text1, categories);  spinner.setAdapter(arrayAdapter);  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {   @override   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {    Toast.makeText(MainActivity.this, "选中的分类是: " + categories.get(position), Toast.LENGTH_LONG).show();   }     @Override   public void onNothingSelected(AdapterView<?> parent) {     }  });  new AlertDialog.Builder(this)    .setTitle("提示")    .setView(view)    .setPositiveButton(android.R.string.ok, new Dialoginterface.OnClickListener() {     @Override     public void onClick(DialogInterface dialog, int which) {      dialog.dismiss();     }    })    .show(); }

只能说spinner在dialog中,显示出来的效果一般般,即使通过自定义item布局,调整padding,感觉效果也不是特别让人满意。

截张图:

&nbsp;Spinner在Dialog中的使用效果实例代码详解

在Github上找到一个不错的项目,https://github.com/Lesilva/BetterSpinner

修改代码,替换为BetterSpinner。

在app/build.gradle中添加

compile ‘com.weiwangcn.betterspinner:library:1.1.0'

xml布局文件修改为:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  android:padding="16dp">  <com.weiwangcn.betterspinner.library.MATErial.MaterialBetterSpinner   android:id="@+id/spinner"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:layout_marginBottom="@dimen/activity_vertical_margin"   android:hint="@string/notebook_choose_notebook_hint" />  <EditText   android:id="@+id/edit"   android:layout_width="match_parent"   android:layout_height="wrap_content"   android:padding="8dp" /> </LinearLayout>

显示dialog的方法调整为

 public void onClickedAddNotebook(final String parentNotebookId, List<Notebook> notebooks) {  View view = LayoutInflater.from(mActivity).inflate(R.layout.dialog_add_notebook, null);  final EditText mEdit = (EditText) view.findViewById(R.id.edit);  final MaterialBetterSpinner spinner = (MaterialBetterSpinner) view.findViewById(R.id.spinner);  final List<Notebook> tempNotebooks = new ArrayList<>();  tempNotebooks.clear();  tempNotebooks.addAll(notebooks);  Notebook rootNoteBook = new Notebook();  rootNoteBook.setTitle(mActivity.getString(R.string.notebook_default_root_notebook_title));  tempNotebooks.add(0, rootNoteBook);  SpinnerArrayAdapter<Notebook> adapter = new SpinnerArrayAdapter<Notebook>(view.getContext(), tempNotebooks) {   @Override   public String itemToString(Notebook item) {    return item.getTitle();   }  };  spinner.setAdapter(adapter);  spinner.setText(rootNoteBook.getTitle());  new AlertDialog.Builder(mActivity)    .setTitle(R.string.add_notebook)    .setView(view)    .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {     @Override     public void onClick(DialogInterface dialog, int which) {      dialog.dismiss();      addNotebook(mEdit.getText().toString(), getNotebookId(tempNotebooks, spinner.getText().toString()));     }    })    .show(); }

细微之处的api有所变化,用法大多差不多,看一下最终的预览效果,觉得还是挺materialDesign风的。

Spinner在Dialog中的使用效果实例代码详解

总结

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Spinner在Dialog中的使用效果实例代码详解全部内容,希望文章能够帮你解决Spinner在Dialog中的使用效果实例代码详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。