【问题标题】:MapFragment update button positionMapFragment 更新按钮位置
【发布时间】:2023-03-04 07:59:07
【问题描述】:

我遇到了一个相当具体的问题。我有一个MapFragment 在我的Activity 中有一个FrameLayout 以便Toolbar 覆盖地图。这是因为 Toolbar 有时需要在屏幕上进行动画处理,如果它不覆盖地图,则会出现间隙。

现在,当设备没有有效的Google Play Services 时,MapFragment 将默认显示一条消息和一个用于更新服务的按钮。我的问题是这条消息显示在地图的左上角,位于Toolbar 下方。

有人知道如何解决这个问题吗?也许我自己检查Google Play Services 的有效性并在它无效时创建一些填充?或者是否有一个简单的解决方案,例如在地图上设置某种重力,以便更新消息居中。

感谢您的帮助。

【问题讨论】:

    标签: android google-maps google-play-services mapfragment


    【解决方案1】:

    您可以使用 GoogleMap.setPadding() 方法在地图边缘添加填充。或创建自定义 alertDialog 向用户显示有关 Google Play 服务的信息

    对话框示例

    GoogleApiAvailability api = GoogleApiAvailability.getInstance();
            int code = api.isGooglePlayServicesAvailable(activity);
            if (code == ConnectionResult.SUCCESS) {
            //
            } else {
               AlertDialog alertDialog =
                     new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle).setMessage(
                           "You need to download Google Play Services in order to use this part of the application")
                           .create();
               alertDialog.show();
            }
    

    【讨论】:

    • setPadding 方法不起作用,因为没有加载地图,但使用对话框的想法很好。我在以前的项目中使用它,并附注说我使对话框无法关闭(如果这将被关闭,用户将在一个空屏幕上)。
    • 你应该添加 .setCancelable(false)
    • 或 .setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { // 完成活动或返回上一个片段 } })
    • 谢谢,我想我必须自己检查播放服务。然而就像 lulian 说的 setPadding() 不起作用。我想我会选择Dialog 解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多