Android:创建一个具有多个选择选项的弹出窗口

Posted

技术标签:

【中文标题】Android:创建一个具有多个选择选项的弹出窗口【英文标题】:Android: create a popup that has multiple selection options 【发布时间】:2013-04-29 16:01:11 【问题描述】:

我一直在四处寻找,试图弄清楚如何创建一个有 4 个选项可供选择的弹出窗口或对话框。

我在 android 开发者网站上看到了这张图片:

有谁知道如何编写类似右侧的代码?我的文本旁边不需要任何图标,我只需要能够从 4 个选项中进行选择即可。

【问题讨论】:

【参考方案1】:

您可以使用要在其中显示的选项创建一个String 数组,然后使用setItems(CharSequence[], DialogInterface.OnClickListener) 方法将该数组传递给AlertDialog.Builder

一个例子:

String[] colors = "red", "green", "blue", "black";

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(colors, new DialogInterface.OnClickListener() 
    @Override
    public void onClick(DialogInterface dialog, int which) 
        // the user clicked on colors[which]
    
);
builder.show();

输出(在 Android 4.0.3 上):

(不包括背景图。;))

【讨论】:

.create() 在这里是不必要的,.show() 将返回由构建器创建的对话框,然后将其显示出来 非常感谢您。我真的不想为简单的文本菜单实现 xml 布局,并且在偶然发现这篇文章之前找不到一种简单的方法。 我们如何在这些文本中间设置颜色?例如红色显示红色?绿色文本以绿色显示? 注意:这个例子不是多个,请从帖子中再次阅读标题:) 您好,您能否介绍一下如何为特定项目选择设置操作?示例:我想让用户通过单击其中一项来更改应用语言(可能使用 if 语句)。【参考方案2】:

试试这个:

public void onClick(View v) 

    final String[] fonts = 
        "Small", "Medium", "Large", "Huge"
    ;

    AlertDialog.Builder builder = new AlertDialog.Builder(TopicDetails.this);
    builder.setTitle("Select a text size");
    builder.setItems(fonts, new DialogInterface.OnClickListener() @
        Override
        public void onClick(DialogInterface dialog, int which) 
            if ("Small".equals(fonts[which])) 
                Toast.makeText(TopicDetails.this, "you nailed it", Toast.LENGTH_SHORT).show();
             else if ("Medium".equals(fonts[which])) 
                Toast.makeText(TopicDetails.this, "you cracked it", Toast.LENGTH_SHORT).show();
             else if ("Large".equals(fonts[which])) 
                Toast.makeText(TopicDetails.this, "you hacked it", Toast.LENGTH_SHORT).show();
             else if ("Huge".equals(fonts[which])) 
                Toast.makeText(TopicDetails.this, "you digged it", Toast.LENGTH_SHORT).show();
            
            // the user clicked on colors[which]

        
    );
    builder.show();

【讨论】:

我认为 switch(font[which]) 正在这样做。【参考方案3】:

弹出窗口不过是AlertDialog。所以你只需要创建AlertDialog,然后使用LayoutInflater 膨胀你想要的视图,并使用setView()setView() 方法@ 方法设置膨胀视图

【讨论】:

【参考方案4】:

替代选项

这是我的第一篇文章,所以我很高兴能分享我的代码! 这对我有用:

将这两行放在 OnCreate 事件上方

final String[] Options = "Red", "Blue";
AlertDialog.Builder window;

将此代码放在将触发此的事件上

window = new AlertDialog.Builder(this);
window.setTitle("Pick a color");
window.setItems(Options, new DialogInterface.OnClickListener() 
    @Override
    public void onClick(DialogInterface dialog, int which) 
        if(which == 0)
           //first option clicked, do this...

        else if(which == 1)
           //second option clicked, do this...

        else
        //theres an error in what was selected
            Toast.makeText(getApplicationContext(), "Hmmm I messed up. I detected that you clicked on : " + which + "?", Toast.LENGTH_LONG).show();
        
    
);

window.show();

【讨论】:

是的,进步很大。 switch 语句改进更多

以上是关于Android:创建一个具有多个选择选项的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android studio 的弹出窗口内添加滚动的 listView?

使用 jQuery 的具有复杂功能的弹出窗口

在 Android 上的 Cordova 应用程序中的弹出窗口后面模糊

Kivy 如何创建一个可根据内容调整大小的弹出窗口?

Qt中的弹出窗口

Android 文本选择监听器