更改可见性后,ViewPager无法滑动

时间:2015-01-21 13:29:36

标签: android android-listview android-viewpager

我有一个有ViewPager的Activity。在这个ViewPager中有4个碎片。其中一个片段(我们称之为MyListFragment)在RelativeLayout中有一个带有ListView和MapView(Google maps V2)的布局文件。这两个视图中只有一个一次可见。最初,ListView是可见的,MapView消失了。我有一个Button,当我点击它时,我切换了可见性:ListView消失了,MapView可见。当我再次单击它时,MapView设置为已消失,ListView显示为可见。你得到了照片。 现在问题如下:在设置MapView后,ListView恢复可见,ViewPager将不再刷卡。相反,所有触摸事件都转到ListView(这是一个普通的垂直ListView)。我在几步中将其分解,并在我能够或不能刷ViewPager时进行检查。

  1. ListView可见,MapView消失了:一切正常。
  2. 将ListView设置为已消失:一切正常。
  3. 将ListView设置回可见:一切正常。
  4. 设置ListView消失,MapView恢复可见,MapView恢复过去:一切正常。
  5. 将ListView设置为可见:!!! ViewPager将不再在这个片段上滑动!!!
  6. 将ListView设置为已消失:一切正常。
  7. 这很奇怪,因为第5步看起来与第1步的状态相同。这是我的布局文件:

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/fragment_padding"
        android:paddingRight="@dimen/fragment_padding"
        android:paddingBottom="@dimen/list_padding_bottom"
        android:clipToPadding="false"
        android:scrollbarStyle="outsideOverlay"/>
    
    <com.google.android.gms.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"/>
    
    <Button
        android:id="@+id/button_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="@dimen/fragment_padding"
        android:layout_marginLeft="@dimen/fragment_padding"
        android:layout_marginRight="@dimen/fragment_padding"
        android:text="Show on map"/>
    

    以下是一些onCreateView代码:

    this.listView = (ListView) view.findViewById(R.id.listView);
    this.mapView = (MapView) view.findViewById(R.id.mapView);
    this.mapView.onCreate(savedInstanceState);
    this.mapView.getMapAsync(this);
    

    以下是按钮的onClick中发生的情况:

                if(this.listView.getVisibility() == View.VISIBLE)
                {
                    this.listView.setVisibility(View.GONE);
                    this.mapView.setVisibility(View.VISIBLE);
                    this.buttonSwitch.setText("Show in list");
                }
                else
                {
                    this.listView.setVisibility(View.VISIBLE);
                    this.mapView.setVisibility(View.GONE);
                    this.buttonSwitch.setText("Show on map");
                }
    

    如果我需要提供另一段代码,请告诉我。任何帮助将不胜感激,因为我似乎找不到这个错误的原因。

1 个答案:

答案 0 :(得分:0)

仅启用和禁用,如:-

java:-

 googleMap.getUiSettings().setAllGesturesEnabled(false); // true / false with Visible / Gone

科特琳:-

 googleMap?.uiSettings?.setAllGesturesEnabled(false)