Lorsque j'essaie de parcourir la carte google, le fichier CoordinatorLayout défile vers le bas et, bien sûr, je souhaite déplacer la carte à la place. Si je tiens en dehors de la carte, puis que j'essaie de faire un panoramique, cela fonctionne parfaitement, mais ce ne serait pas une très bonne expérience pour l'utilisateur final. L'OnTouchListener corrige une partie du problème ... mais uniquement si je le déplace horizontalement. Au moment où mon doigt monte ou descend, il arrête de faire un panoramique sur la carte. Comment puis-je résoudre ce problème?Désactiver le défilement lors de la mise à l'échelle avec l'API Google Maps
public class HomeFragment extends Fragment {
private TextView aboutTxt;
private SupportMapFragment mSupportMapFragment;
private GoogleMap mMap;
public HomeFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
Log.e(TAG,"Down");
return true;
}
if (event.getAction()==MotionEvent.ACTION_MOVE){
Log.e(TAG,"Move");
return true;
}
if (event.getAction()==MotionEvent.ACTION_UP){
Log.e(TAG,"Up");
return true;
}
return false;
}
});
mSupportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
if (mSupportMapFragment == null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
mSupportMapFragment = SupportMapFragment.newInstance();
fragmentTransaction.replace(R.id.map, mSupportMapFragment).commit();
}
if (mSupportMapFragment != null) {
mSupportMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
if (googleMap != null) {
mMap = googleMap;
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// Add a marker in Sydney and move the camera
LatLng myMap = new LatLng(xx.xxxx, xx.xxxx);
mMap.addMarker(new MarkerOptions().position(gradiMap).title("My marker));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myMap, 17));
}
}
});
}
XML
<android.support.design.widget.AppBarLayout
android:id="@+id/main.appbar"
android:layout_width="match_parent"
android:layout_height="300dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/main.collapsing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<FrameLayout
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/main.toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/aboutTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="8dp"
android:padding="@dimen/activity_horizontal_margin"
android:textColor="@color/colorBlack"
android:textSize="17sp" />
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_horizontal_margin"
android:src="@drawable/whitestar"
app:layout_anchor="@id/main.appbar"
app:layout_anchorGravity="bottom|right|end" />
pouvez-vous expliquer un peu plus s'il vous plaît? Je n'arrive toujours pas à le faire fonctionner – r3dm4n
Dans les cas comme celui-ci, la première chose que je fais est de voir si mon interception fait quoi que ce soit. Changez votre méthode 'onInterceptTouchEvent' pour retourner true à chaque fois et voir si des touchers arrivent sur la carte. Ou vous pourriez voir un point d'arrêt sur la ligne 'switch' et voir si jamais il est touché. – LukeWaggoner
merci de m'indiquer dans la bonne direction. problème résolu. – r3dm4n