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

问题描述 投票:3回答:1

我有一个带有ViewPager的活动。在此ViewPager中有4个片段。这些片段之一(我们称其为MyListFragment)在RelativeLayout中具有一个带有ListView和MapView(Google Maps V2)的布局文件。一次只能看到这2个视图中的一个。最初,ListView可见,而MapView消失了。我有一个按钮,当我单击它时,我将可见性切换: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");
            }

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

我有一个带有ViewPager的活动。在此ViewPager中有4个片段。这些片段之一(我们称其为MyListFragment)具有一个布局文件,其中包含ListView和MapView(Google Maps V2),位于...

android android-listview android-viewpager
1个回答
0
投票

仅启用和禁用,如:-

© www.soinside.com 2019 - 2024. All rights reserved.