将材质波纹应用于ViewPager项目

时间:2016-03-08 16:30:45

标签: android android-viewpager material-design

我想将材质设计ripple effect添加到View显示的ViewPager中。通过将?attr/selectableItemBackground设置为View的背景,我的团队已经能够在我们的应用的其他部分执行此操作。但是,当我将其指定为View适配器返回的ViewPager的背景时,效​​果似乎无效。有没有人得到这个工作?

根据经验,ViewPager似乎消耗了阻止与子女进行某些互动的事件。例如,ViewPager个项目不会获得onClick()个事件,您必须解决in other ways个问题。我想知道这里是否存在类似的问题,ViewPager正在消耗涟漪工作所需的事件。

2 个答案:

答案 0 :(得分:0)

您只需将xml视图放入FrameLayout,如下所示:

旧布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/viewpager_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:contentDescription="@string/app_name"
        android:scaleType="centerCrop"/>

        <ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:indeterminateDrawable="@drawable/progress_medium_holo"
        android:visibility="gone" />

    </RelativeLayout>

新布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:foreground="?android:attr/selectableItemBackground"
    android:selectable="true">

    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
          android:id="@+id/viewpager_image"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:contentDescription="@string/app_name"
          android:scaleType="centerCrop"/>

        <ProgressBar
          android:id="@+id/loading"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerInParent="true"
          android:layout_gravity="center"
          android:indeterminateDrawable="@drawable/progress_medium_holo"
          android:visibility="gone" />

    </RelativeLayout>

</FrameLayout>

答案 1 :(得分:0)

视图分页器用于滑动,因此如果要单击它,则需要以编程方式或XML文件中指定。例如,将这些属性添加到视图寻呼机项目的布局中,而不是视图寻呼机本身。

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"