前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android初级】如何实现一个具有选择功能的对话框效果

【Android初级】如何实现一个具有选择功能的对话框效果

作者头像
netkiller old
发布2021-02-08 19:20:10
7930
发布2021-02-08 19:20:10
举报
文章被收录于专栏:NetkillerNetkiller

我们去餐厅吃饭时,服务员都会拿菜单给我们选择点什么菜。今天就分享一个具有选择功能的简易对话框,给用户展示一个选择列表。实现思路如下:

  1. 既然有选择列表,那么这个列表的内容肯定保存在某个地方
  2. 用户选择某一项后,给用户做出提示,刚才选择的是什么

该功能主要用的是 AlertDialog,源码如下:

1、主Activity(细看代码中详细的注释)

代码语言:javascript
复制
import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.example.memorydemo.R;
public class AlertDialogDemo extends Activity {
    @Override    protected void onCreate(Bundle onSavedInstance) {        super.onCreate(onSavedInstance);        setContentView(R.layout.alert_dialog_demo);
        Button button = findViewById(R.id.buttonAlertDialog);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new AlertDialog.Builder(AlertDialogDemo.this)                        .setTitle("Please choose")
                        // 设置对话框的显示内容,是个内容列表,注意:这里需要传数组类型,比如 R.array 或者 String[]                        .setItems(R.array.items_alert_dialog, new DialogInterface.OnClickListener() {
                            // 点击列表上的任一项                            @Override                            public void onClick(DialogInterface dialog, int which) {                                String[] items = getResources().getStringArray(R.array.items_alert_dialog);                                new AlertDialog.Builder(AlertDialogDemo.this)
                                        // 再次弹框,向用户提示 用户刚才选择的内容                                        .setMessage("You chose: " + items[which])                                        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {                                            @Override                                            public void onClick(DialogInterface dialog, int which) {                                            }                                        }).show();                            }                        })
                        // 第一个对话框有个 取消 按钮                        .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                dialog.dismiss();                            }                        })                        .show();            }        });    }
}

2、布局文件 alert_dialog_demo.xml

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">
    <TextView            android:paddingTop="20dp"            android:text="这是一个AlertDialog样例"            android:layout_width="match_parent"            android:gravity="center"            android:layout_height="wrap_content" android:id="@+id/textView7"/>    <Button            android:text="点击开始选择"            android:layout_marginTop="20dp"            android:layout_width="match_parent"            android:layout_height="wrap_content" android:id="@+id/buttonAlertDialog"/>
</LinearLayout>

3、列表内容定义在 res/values/strings.xml 中:

代码语言:javascript
复制
<resources>      ...      <array name="items_alert_dialog">        <item>成都串串</item>        <item>重庆火锅</item>        <item>港式餐厅</item>    </array>
</resources>

4、效果图如下:

分享这个极为简单的功能,主要是为后面学习AlertDialog的中高级用法以及实现具备复杂选择功能的需求打下坚实的基础。

往期推荐

【Android初级】如何实现一个“模拟后台下载”的加载效果

【Android初级】如何动态添加菜单项(附源码+避坑)

分享一个口语中可以替代“deceive”的地道表达

使用TypeFace设置TextView的文字字体(附源码)

利用startActivityForResult返回数据到前一个Activity(附源码+解析)

“Old school”除了指“旧学校”,还有...

使用setContentView实现页面的转换效果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netkiller 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档