ViewPager下面的图层中的按钮如何获得Click事件?

时间:2014-12-05 06:42:38

标签: android android-viewpager

我想实现一个有两层的UI。 底层有一个背景图像和两个按钮,而顶层是一个ViewPager有一些用于滑动的文本。你可以参考LinkedIn的启动画面。 如下图所示:

enter image description here

目前,当ViewPager(顶部)中的文本滑动时,背景图像(底部)会发生变化,这样可以正常工作。但目前的问题是:两个按钮(底部)无法获得点击事件,因为它位于ViewPager后面。我没有把按钮放到顶层,因为我想在寻呼机刷卡时保持按钮静止。有没有人知道让底层视图获得点击事件的方法?

主要布局如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/col_7"
    android:orientation="vertical" >

         <LinearLayout
            android:id="@+id/slide_background" 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:background="@drawable/slide1"
            >
            <RelativeLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                >

                <LinearLayout 
                    android:id="@+id/slide_button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    >
                    <Button
                        android:id="@+id/slide_login"
                        android:layout_width="150dp"
                        android:layout_height="49dp"
                        android:layout_marginLeft="20dp"
                        android:background="@drawable/login_white_button"
                        android:text="@string/login"
                        android:textSize="18sp"
                        android:textColor="@color/col_11"
                        android:layout_gravity="left"
                        android:layout_marginBottom="20dp"
                        android:onClick="gotoSignin"
                    />
                    <Button
                        android:id="@+id/signup_btn"
                        android:layout_width="150dp"
                        android:layout_height="49dp"
                        android:layout_marginLeft="20dp"
                        android:layout_marginRight="20dp"
                        android:background="@drawable/signup_button_bg"
                        android:text="@string/signup"
                        android:textSize="18sp"
                        android:textColor="@color/login_red_button_text"
                        android:layout_marginBottom="20dp"
                        android:onClick="gotoSignup"
                        android:visibility="visible"
                        />

                </LinearLayout>

            </RelativeLayout>


        </LinearLayout>  

        <android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

</RelativeLayout>

EDIT1: 我将外部容器更改为FrameLayout并更改ViewPager的布局参数,看起来更好。如果我将ViewPager的高度设置为某个值,例如&#34; 350dp&#34;,则按钮响应我的点击,但当高度为&#34; wrap_content&#34;时,它仍然无法响应。

<android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:layout_gravity="top"
            />

1 个答案:

答案 0 :(得分:0)

尝试使用LinearLayout并将weight属性设置为Viewpager,同时删除不必要的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/col_7"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

    <LinearLayout
        android:id="@+id/slide_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/slide1"
        android:padding="5dp">

        <Button
            android:id="@+id/slide_login"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/login_white_button"
            android:text="@string/login"
            android:textSize="18sp"
            android:textColor="@color/eb_col_11"/>

        <Button
            android:id="@+id/signup_btn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/signup_button_bg"
            android:text="@string/signup"
            android:layout_marginLeft="5dp"
            android:textSize="18sp"
            android:textColor="@color/login_red_button_text"
            android:onClick="gotoSignup"/>
    </LinearLayout>

</LinearLayout>