我正在使用Google map-V2 API在android中编写应用程序。我想像谷歌地图应用程序一样放置动作栏。然后我启用了“我的位置”按钮。现在的问题是我的位置按钮位于操作栏下。有没有办法重新定位此按钮。我想创建一个类似于地图的应用程序。我是android新手所以请帮忙。
答案 0 :(得分:14)
您可以将padding设置为地图。
这解决了问题 - 覆盖在顶部的地图上(我使用了48次下降,但你可以覆盖操作栏然后获得它的实际高度(?android:attr / actionBarSize ))
mapFragment.getMap().setPadding(0, dpToPx(48), 0, 0);
(DP到PX功能来自this SO answer)
答案 1 :(得分:9)
您可以轻松地重新定位您的位置按钮
View plusMinusButton = suppormanagerObj.getView().findViewById(1);
View locationButton = suppormanagerObj.getView().findViewById(2);
// and next place it, for exemple, on bottom right (as Google Maps app)
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
// position on right bottom
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
mMap.setPadding(0, 0, 30, 105);
答案 2 :(得分:7)
您无法以任何方式更改MyLocationButton,但可以启用和禁用它。已经有request了。
随意disable按钮,然后实现自己的按钮。
你会有这样的事情:
mMap.getUiSettings().setMyLocationButtonEnabled(false);
答案 3 :(得分:3)
我通过使用下面的代码将我的位置按钮重新定位到视图的右下角,在我的地图片段中解决了这个问题, 这是我的Maps Activity.java: -
在onCreate()方法中添加这行代码,
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapView = mapFragment.getView();
mapFragment.getMapAsync(this);
这里是onMapReady()代码: -
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
if (mapView != null &&
mapView.findViewById(Integer.parseInt("1")) != null) {
// Get the button view
View locationButton = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
// and next place it, on bottom right (as Google Maps app)
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)
locationButton.getLayoutParams();
// position on right bottom
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
layoutParams.setMargins(0, 0, 30, 30);
}
}
我希望,这将解决您的问题。感谢。
答案 4 :(得分:2)
只需使用GoogleMap.setPadding(左,上,右,下),即可指示地图中可能被其他视图遮挡的部分。设置填充会重新定位标准地图控件,相机更新将使用填充区域。
https://developers.google.com/maps/documentation/android/map#map_padding
答案 5 :(得分:0)
我使用findViewWithTag来获取对按钮的引用,而不是findViewById解决方案。使用字符串对我来说似乎更具可读性和可靠性。
View myLocationButton = mMap.findViewWithTag("GoogleMapMyLocationButton");
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) myLocationButton.getLayoutParams();
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);