gpt4 book ai didi

Scrollview 中的 Android Google Maps v2 在某些设备上显示灰色图 block

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:47 25 4
gpt4 key购买 nike

Scrollview 内有 Android Google Maps v2它适用于许多设备,但在某些设备上显示灰色图 block 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);
}
}
}

同时设置:

    ((WorkaroundMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).setListener(new WorkaroundMapFragment.OnTouchListener() {
@Override
public void onTouch() {
mScrollViewDa.requestDisallowInterceptTouchEvent(true);
}
});

用户拍摄的图片,Android 版本:4.2.2设备:Samsung Grand 2

应用测试:Samsung Galaxy Tab 2 10.1":4.0.3Asus Fonepad 7"平板电脑:5.0.1运行良好

android:minSdkVersion="10"

enter image description here

最佳答案

对于类似的问题,我采用了不同的方法。

是的,您说得对,您不能将 map 直接放入 ScrollView...但您可以使用 FrameLayout 并在运行时用 map 替换它。像这样:

<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" />

然后我创建了一个自定义 map ,因为我需要一些“调整”(如果您对默认 map 没问题,则可以避免此步骤):

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();
}

然后,在我刚刚添加的 fragment 中:

    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);

你应该没问题。

关于Scrollview 中的 Android Google Maps v2 在某些设备上显示灰色图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024300/

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