我的观点出现问题,如下所示:
正如您所看到的那样,它应该是一个具有不可滚动的ListViews的可滚动视图。
它包含DrawerLayout,其中我有CoordinatorLayout(包含我的片段的AppBarLayout和我的FrameLayout)和NavigationView。
activity_main.xml中
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:background="@color/colorBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_vision"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_vision"
app:menu="@menu/activity_vision_drawer" />
app_bar_vision.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".activity.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorBar"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_scrollFlags="scroll|enterAlways|snap"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"/>
现在主要部分。我的片段布局由ScrollView组成,里面有RelativeLayout,我有两个ListViews,根据指定的元素以编程方式设置高度。
fragment_preferences.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include layout="@layout/content_preferences" />
</ScrollView>
content_preferences.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
tools:context="dron.mkapiczynski.pl.dronvision.fragment.PreferencesFragment"
tools:showIn="@layout/fragment_preferences">>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Preferencje wizualizacji"
android:id="@+id/preferencesTitle"
android:layout_gravity="center" />
<TextView
android:id="@+id/trackedListTitle"
android:text="Drony śledzone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/preferencesTitle"
android:layout_marginTop="20dp"/>
<ListView
android:id="@+id/trackedDroneList"
android:layout_below="@+id/trackedListTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"
android:layout_centerInParent="true"
tools:showIn="@layout/fragment_preferences"/>
<TextView
android:id="@+id/visualizedListTitle"
android:text="Drony do wizualizacji obszaru przeszukanego"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/trackedDroneList"
android:layout_marginTop="20dp"/>
<ListView
android:id="@+id/visualizedDroneList"
android:layout_below="@+id/visualizedListTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal"
android:layout_centerInParent="true"
android:nestedScrollingEnabled="true"
tools:showIn="@layout/fragment_preferences"/>
一般情况下滚动有效但仅当我触摸ListView外部区域的屏幕时,例如在我的TextView区域中。当我尝试使用ListView滚动区域时没有任何反应。
我会感激任何建议。我试图实现我自己的nonScrollingListView扩展ListView思想可以启用父滚动,但这没有帮助。 我还读过有关使用LinearLayout而不是ListView的信息,但也许有一种方法可以将ListView与ScrollView一起使用?
答案 0 :(得分:0)
通常不鼓励使用Scrollable视图作为scrollview或任何其他可滚动内容的子视图。 但是,如果需要应用程序,并且开发人员想要顺利处理滚动事件,下面是单独处理可滚动内容的方法,
对于父卷轴视图,您可以将滚动事件处理为
m_parentScrollView.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View p_v, MotionEvent p_event)
{
m_childScrollView.getParent().requestDisallowInterceptTouchEvent(false);
// We will have to follow above for all scrollable contents
return false;
}
});
对于子滚动视图,在您的案例Listview中,我们必须处理如下所示的事件:
m_childScrollView.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View p_v, MotionEvent p_event)
{
// this will disallow the touch request for parent scroll on touch of child view
p_v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
您可以从此处获得有关它的更多详细信息: handle-scrollable-views-or-controls-in-another-scrollview-in-android
此外,作为旁注,我在使用Scrollview和RelativeLayout时也遇到了一些类似的问题,而this用户也面临与您相同的问题。
希望它可以帮助你:)