And*_*Sco 7 android google-maps
Scrollview中有Android Google Maps v2它适用于许多设备,但在某些设备上显示灰色瓷砖API KEY 正确,
要在Scrollview中使用Google Maps V2,应使用自定义类扩展SupportMapFragment,如下所示:
public class WorkaroundMapFragment extends SupportMapFragment {
private OnTouchListener mListener;
@Override
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {
View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);
TouchableWrapper frameLayout = new TouchableWrapper(getActivity());
frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));
((ViewGroup) layout).addView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return layout;
}
public void setListener(OnTouchListener listener) {
mListener = listener;
}
public interface OnTouchListener {
public abstract void onTouch();
}
public class TouchableWrapper extends FrameLayout {
public TouchableWrapper(Context context) {
super(context);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mListener.onTouch();
break;
case MotionEvent.ACTION_UP:
mListener.onTouch();
break;
}
return super.dispatchTouchEvent(event);
}
}
}
Run Code Online (Sandbox Code Playgroud)
还设置:
((WorkaroundMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).setListener(new WorkaroundMapFragment.OnTouchListener() {
@Override
public void onTouch() {
mScrollViewDa.requestDisallowInterceptTouchEvent(true);
}
});
Run Code Online (Sandbox Code Playgroud)
用户拍摄的图像,Android版本:4.2.2,设备:Samsung Grand 2
应用程序测试:三星Galaxy Tab 2 10.1":4.0.3和华硕Fonepad 7"平板电脑:5.0.1并且运行良好
android:minSdkVersion="10"
Run Code Online (Sandbox Code Playgroud)
对于类似的问题,我采取了不同的方法。
是的,你是对的,你不能将地图直接放入 ScrollView...但你可以拥有 FrameLayout 并在运行时将其替换为地图。像这样:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="-100dp"
android:layout_marginBottom="-100dp"
android:id="@+id/mapViewDetail"
android:scaleType="centerCrop"
xmlns:tools="http://schemas.android.com/tools"
android:layout_above="@+id/bottom_layout"
tools:context="com.yourpackage.app.HomeActivity"
tools:ignore="MergeRootFrame" />
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个自定义地图,因为我需要一些“调整”(如果您对默认地图感到满意,则可以避免此步骤):
public abstract class MiniMapFragment extends MapFragment {
@Override
public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
View v = super.onCreateView(arg0, arg1, arg2);
initMap();
return v;
}
public abstract void initMap();
}
Run Code Online (Sandbox Code Playgroud)
然后,在我刚刚添加的片段中:
MiniMapFragment mMapFragment = new MiniMapFragment() {
@Override
public void initMap() {
googleMap = getMap();
getMap().getUiSettings().setMyLocationButtonEnabled(false);
getMap().getUiSettings().setZoomControlsEnabled(false);
getMap().getUiSettings().setScrollGesturesEnabled(false);
}
};
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.mapViewDetail, mMapFragment);
fragmentTransaction.commit();
getFragmentManager().executePendingTransactions();
MapsInitializer.initialize(this);
Run Code Online (Sandbox Code Playgroud)
你应该没事。
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |