【问题标题】:How can I show a popup window in my activity?如何在我的活动中显示弹出窗口?
【发布时间】:2014-11-26 10:00:33
【问题描述】:

大家好,我的应用中有一个包含谷歌地图片段的活动,我想知道当我在任何 infoWindow 上推送有关该地点的更多信息时是否可以显示一个弹出窗口。有没有办法做到这一点?

【问题讨论】:

    标签: android android-activity android-fragments google-maps-markers google-maps-android-api-2


    【解决方案1】:

    您可以使用自定义对话框。创建一个扩展 Dialog 类的对话框。然后您覆盖您需要的方法。在方法 show() 中,您可以扩展您自己的布局并关联您需要的操作。这是 show() 方法的一个小例子:

        @Override
        public void show() {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            LayoutInflater inflater = LayoutInflater.from(context);
    
            View layout = inflater.inflate(R.layout.your_layout, null);
    
            setCanceledOnTouchOutside(false);
            setCancelable(false);
    
            super.setContentView(layout);
    
            ((TextView) layout.findViewById(R.id.tvTitle)).setText(title);
            ((TextView) layout.findViewById(R.id.tvContent)).setText(content);
            dialog = layout.findViewById(R.id.dialog);
    
            Button btCancelar = (Button) layout.findViewById(R.id.btCancelar);
    
    
            super.show();
    
        }
    

    希望对你有帮助!!

    【讨论】:

    • 昨天没时间了,今天我试试看:)非常感谢
    • 安卓
    • 如果我创建一个扩展 Dialog 的新类,我无法从 show() 传递上下文 .. 我该如何处理上下文??
    • 我解决了这个!太感谢了 !!只需将上下文传递给扩展 Dialog 的类:D
    • 太棒了,您可以在创建 customDialog 时在自己的构造函数中传递上下文。然后,调用 show() 方法。
    【解决方案2】:

    是的,它可以在地图片段中创建窗口。但仍然要清楚你的问题。您是否需要单击地图中的某个位置时弹出窗口,或者您需要弹出警报消息之类的弹出窗口?具体点!

    【讨论】:

    • 好的,我只需要一个弹出窗口,而不是警报。我在地图上有我的标记。当我按下标记时,会出现一个带有一些详细信息的自定义信息窗口,现在我想要,当我按下相关信息窗口时,会出现一个更大的弹出窗口,显示更多详细信息,如电话号码、电子邮件地址和其他详细信息。
    【解决方案3】:

    您可以使用以下代码创建自定义信息窗口,以使用自定义布局在地图标记上显示位置详细信息:

    map.setInfoWindowAdapter(new InfoWindowAdapter() {
    
                @Override
                public View getInfoWindow(Marker marker) {
    
                    View v = getLayoutInflater().inflate(R.layout.infowindow,
                            null);
    
                    TextView txt_title = (TextView) v.findViewById(R.id.info_title);
                    txt_title.setText(marker.getTitle());
    
                    TextView txt_snippet = (TextView) v.findViewById(R.id.info_snippet);
                    txt_snippet.setText(strSnippet);
    
                    return v;
    
                }
    
                @Override
                public View getInfoContents(Marker marker) {    
    
                    return null;
    
                }
            });
    

    希望对你有帮助。

    【讨论】:

    • 我已经做了一个自定义信息窗口,我想做的是创建一个更大的窗口,当我点击信息窗口时会出现。不过还是谢谢你:)
    猜你喜欢
    • 2022-09-28
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多