最近在项目中碰到一个非常奇葩的问题,我的最外层是一个ViewPager,ViewPager中包含一个Fragment的集合,可以左右滑动,Fragment中的布局文件部分如下:
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_marginBottom="@dimen/common_dimen_dp3"
android:layout_marginLeft="@dimen/common_dimen_dp1"
android:layout_marginRight="@dimen/common_dimen_dp1"
android:layout_marginTop="@dimen/common_dimen_dp3"
android:background="@drawable/shape_corner_blue"
android:ellipsize="end"
android:padding="3dp"
android:singleLine="true"
android:stateListAnimator="@null"
android:text="@string/user_pr_inventory_count"
android:textColor="@color/common_color_c1_337cff" />
这样写,看起来没有什么问题,但是测试的时候发现,当手指在Button上的时候,无法滑动ViewPager,当手指在空白地方的时候,滑动正常。第一反应是滑动事件冲突,试了很多方法都无功而返,最后在网上找到了资料,把android:singleLine=”true”去掉,就没有问题。
android:singleLine=”true”这条属性已经被弃用了,可以用 android:lines=”1” 来代替。另外还有一点需要注意,如果用singLine属性,系统会自带android:ellipsize=”end”,而用android:lines,则需要自己加上才行。具体原因不详,可能用到了这个属性时就会有滑动事件冲突的问题,所有Google才废弃了这个API吧!