我有一个活动,其中我采用了单一标签布局,此标签布局的内容包含在viewpager中。 这是我包含标签布局和viewpager的主要活动代码的一部分。
<android.support.design.widget.TabLayout
android:id="@+id/materialup.tabs"
android:layout_width="fill_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/selecteditem"
android:fillViewport="true"
app:tabBackground="@drawable/tab_background"
app:tabGravity="fill"
app:tabIndicatorColor="#0000"
app:tabIndicatorHeight="4dp"
app:tabMode="fixed"
app:tabSelectedTextColor="?android:attr/textColorPrimaryInverse"
app:tabTextColor="@color/white" />
<!-- The top margin value equals half height of the blue box -->
<android.support.v4.view.ViewPager
android:id="@+id/materialup.viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
并且对于这个viewpager的内容,我采用了一个包含可扩展列表视图的Fragment类,这里是代码的一部分:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="4dip"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frstll"
android:orientation="vertical">
<ExpandableListView //list view taken for list items
android:id="@+id/expandableListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#ffffff"
android:childDivider="#f4f4f4"
android:dividerHeight="1dp"
android:groupIndicator="@null" />
</LinearLayout>
</LinearLayout>
问题在于,当我触摸标签(图像中的绿色部分)时,布局会完美滚动,但是当我点击可展开列表视图的部分(图像中带有白色背景的部分)时,它不会滚动。
那么如何通过触摸可扩展列表部分来实现滚动?
这是我使用上述代码实现的布局。
我想知道为什么expandable listview的默认滚动功能在我的代码中不起作用。
我应该在片段类中更改主活动的布局还是可扩展列表视图代码中的微小更改?
答案 0 :(得分:0)
请在ExpandableListView上添加touchlistener
yourRecyclerview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});