与Google地图类似的地图片段中的SlidingUp面板

时间:2019-03-22 14:04:49

标签: android mapfragment

我正在使用它在地图片段中向上滑动布局,但是我的应用一次又一次崩溃,我不知道发生了什么。在错误报告中,它只是说二进制XML文件第34行二进制XML文件第34行:“错误夸大了类片段”。

  

https://github.com/umano/AndroidSlidingUpPanel

这是我的MapsActivity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:app="http://schemas.android.com"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <com.sothree.slidinguppanel.SlidingUpPanelLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        app:umanoDragView="@+id/dragView"
        app:umanoOverlay="true"
        app:umanoPanelHeight="68dp"
        app:umanoParalaxOffset="100dp"
        app:umanoShadowHeight="4dp">
    <android.support.v4.widget.DrawerLayout android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="#FFFFFF">

            <ImageView
                android:id="@+id/tree_button"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:src="@drawable/tree" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Ecology"
                android:textColor="@color/colorAccent"
                android:textSize="30dp"
                android:textStyle="bold" />
        </android.support.v7.widget.Toolbar>

        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MapsActivity">
        </fragment>
    </LinearLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/menu">
    </android.support.design.widget.NavigationView>
    </android.support.v4.widget.DrawerLayout>
        <include layout="@layout/bottom_data">
        </include>
    </com.sothree.slidinguppanel.SlidingUpPanelLayout>
</RelativeLayout>

BottomData.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:behavior_hideable="false"
    android:clickable="true"
    app:behavior_peekHeight="56dp"
    app:layout_behavior="@string/bottom_sheet_behavior"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tex1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="EXPLORE "
        android:textSize="30sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tex1"
        android:layout_centerInParent="true"
        android:layout_marginTop="30dp"
        android:text="Your Place" />

    <Button
        android:id="@+id/b2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b1"
        android:layout_centerInParent="true"
        android:layout_marginTop="30dp"
        android:text="My Place" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/b2"
        android:layout_centerInParent="true"
        android:layout_marginTop="30dp"
        android:text="Many to find " />
</LinearLayout>

预先感谢!

3 个答案:

答案 0 :(得分:0)

尝试此代码。

Android Studio还可以提供地图活动。您可以轻松添加。

将以下依赖项添加到应用程序级别的gradle文件中。

implementation 'com.google.android.gms:play-services-maps:16.1.0'

之后,您的错误就解决了。

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:map="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:id="@+id/map"
      tools:context=".MapsActivity"
      android:name="com.google.android.gms.maps.SupportMapFragment"/>

答案 1 :(得分:0)

我相信您使用umano滑块的方式错误。

  1. com.sothree.slidinguppanel.SlidingUpPanelLayout必须是您的root element中的activity layout
  2. layout必须将gravity设置为topbottom(滑块将从其开始绘制的位置)
  3. 确保它有两个孩子。第一个孩子是您的main layout。第二个孩子是您layout的上滑面板
  4. main layout应该将widthheight设置为match_parentsliding layout应该将width设置为match_parent,而height应当设置为match_parentwrap_content

这将是一个示例:

//main_activity.xml or whatever layout u wish

<com.sothree.slidinguppanel.SlidingUpPanelLayout
    xmlns:sothree="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    sothree:umanoPanelHeight="68dp">//Height when the slide panel is in the collapsed form

    //This is the base content, everything u want in the view has to be inside these
    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        tools:context=".MapsActivity"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </fragment>

    //This is the sliding layout, everything u want in the slider has to be here
    <LinearLayout
        android:id="@+id/slidingLayoutMapsFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center|top"
            android:text="The Awesome Sliding Up Panel"
            android:textSize="16sp" />

    </LinearLayout>

</com.sothree.slidinguppanel.SlidingUpPanelLayout>

无论如何,您需要将其添加到gradle文件中

implementation 'com.sothree.slidinguppanel:library:3.4.0'

这是来自https://github.com/umano/AndroidSlidingUpPanel

答案 2 :(得分:0)

看看这段代码

<com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:sothree="http://schemas.android.com/tools"
    android:gravity="bottom"
    sothree:umanoPanelHeight="68dp"
    sothree:umanoShadowHeight="4dp"
    sothree:setAnchorPoint="middle"
    >

<!-- Main here -->
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:map="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.eminent.a2019.mapslearnign.MapsActivity" />

</RelativeLayout>


<!-- SlideUpPanelHere -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
</LinearLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>