温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spinner怎么在Dialog中使用

发布时间:2021-01-18 16:07:00 来源:亿速云 阅读:254 作者:Leah 栏目:移动开发

Spinner怎么在Dialog中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Spinner在Dialog中的使用,Dialog中关于view的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">
 <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,感觉效果也不是特别让人满意。

截张图:

 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中使用

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI