gpt4 book ai didi

java - 在 Google map 上显示标签

转载 作者:行者123 更新时间:2023-12-01 12:28:23 25 4
gpt4 key购买 nike

我在 Google map 上显示 TextView 时遇到问题。我在 onCreate 方法期间以编程方式将 MapFragment 添加到 FrameLayout 中,并且 TextView 位于 XML 文件中。据我所见,TextView 已正确显示,但 MapFragment 会覆盖它并在将 TextView 添加到 FrameLayout 时隐藏 TextView。我已经在 StackOverflow 上搜索过,但我能找到的每个类似主题都是 XML 中的静态 MapFragment。

这是我的代码:src/java/SearchMapFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
mMapFragment = MapFragment.newInstance(options);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.map_layout,mMapFragment);
fragmentTransaction.commit();
((TextView)rootView.findViewById(R.id.map_label)).setVisibility(View.VISIBLE);
...
}

和我的 XML 文件:res/layout/fragment_search_map.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/search_map_wrapper_layout"
tools:context="com.appsolute.ParkYoo.SearchMapFragment">

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/map_layout"
android:layout_weight="100">

<TextView style="@style/DarkBlueText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/map_label"
android:gravity="center"
android:layout_marginTop="15dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:visibility="gone"/>

</FrameLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/search_map_frame_layout">

<Button style="@style/WhiteText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Lancer la recherche"
android:layout_margin="5dp"
android:id="@+id/launch_search"
android:background="@drawable/lancer" />

</FrameLayout>
</LinearLayout>
</LinearLayout>

任何帮助将不胜感激,提前致谢!

最佳答案

终于找到答案了。基本上我记得在某个地方看到过 Android 上布局文件的 xml 架构是“从后到前”的。这意味着 xml 布局文件越靠下,您的小部件就会越靠前。因此,小部件将一个放在另一个之上。

因此,我尝试在 xml 文件中的 FrameLayout 之后放置一个 TextView,但结果是相同的,可能是因为该 fragment 是在运行时添加到 FrameLayout 中的,所以它是最后一个添加的,并且与 onCreate 中膨胀的 TextView 重叠方法。

为了解决我的问题,我重新设计了我的 XML,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/search_map_wrapper_layout"
android:gravity=""
tools:context="com.appsolute.ParkYoo.SearchMapFragment">

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/map_layout_leave_place"
android:layout_above="@+id/utility_linear_layout">

</FrameLayout>

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:id="@+id/leave_place_label">

</FrameLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/utility_linear_layout"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true">

<TextView style="@style/DarkBlueText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/street_leave_parking_spot"
android:layout_marginTop="10dp"
android:text="Rue X"/>

<TextView style="@style/TitleText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/city_leave_parking_spot"
android:paddingBottom="15dp"
android:background="@drawable/discontinued_line"
android:text="75009 PARIS"/>

<Button style="@style/WhiteText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="Mémoriser ma place"
android:id="@+id/remember_parking_spot"
android:background="@drawable/lancer"
android:layout_gravity="center_horizontal|bottom"/>

</LinearLayout>

</RelativeLayout>

第一个 FrameLayout (map_layout_leave_place) 是最深的,也是我的 map 将显示的位置。第二个 FrameLayout (leave_place_label) 是我的 TextView 将放置的位置,它位于谷歌地图布局上,目前为空白。其余的发生在运行时。

我创建了一个仅包含 TextView 的 LabelFragment,当我单击将由 Leave_place_label 托管的按钮时,将使用常规 fragment 事务在运行时添加该 TextView。

LabelFragment frag = LabelFragment.newInstance();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.leave_place_label,frag);
ft.commit();

这就是它的作用:

https://drive.google.com/file/d/0B1KRFmgxHcLtMEY3dDQ1c0NRYWM/edit?usp=sharing

关于java - 在 Google map 上显示标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com