Spinner怎么在Dialog中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联建站成都网站建设按需网站策划,是成都网站设计公司,为资质代办提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站改版热线:18982081108
Spinner在Dialog中的使用,Dialog中关于view的xml布局。
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 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,感觉效果也不是特别让人满意。
截张图:

在Github上找到一个不错的项目,https://github.com/Lesilva/BetterSpinner。
修改代码,替换为BetterSpinner。
在app/build.gradle中添加
compile ‘com.weiwangcn.betterspinner:library:1.1.0'
xml布局文件修改为:
显示dialog的方法调整为
public void onClickedAddNotebook(final String parentNotebookId, Listnotebooks) { 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 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 adapter = new SpinnerArrayAdapter (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风的。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。