那么解决思路也就简单了,重写LinkedMovementMethod::onTouchEvent()方法,当且仅当点击到ClickableSpan时,才返回true即可。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical" >
<Button
style="@style/textview"
android:text="在5.0以上,Button默认自带Ripple点击效果" />
<View style="@style/line" />
<Button
style="@style/textview"
android:background="@drawable/ic_launcher"
android:text="但是如果设置了其他的background \n Ripple点击效果就没了" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:text="TextView默认是没有Ripple点击效果的" />
<View style="@style/line" />
<TextView
style="@style/textview2"
android:background="@drawable/_1_default"
android:text="默认是圆形的、超出边界的波纹\n波纹的直径为控件宽高中的最大值" />
<View style="@style/line" />
<TextView
style="@style/textview2"
android:background="@drawable/_1_default2"
android:text=" 但当波纹遇到其他控件的背景时,不会遮挡住其他控件的背景(比如不会挡住下面控件的背景)" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:background="@drawable/_2_color_without_id"
android:text="用颜色作为Mask,不指定id\n此时item中的颜色会被用来作为点击前的背景颜色" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:background="@drawable/_2_color_with_id"
android:text="用颜色作为Mask,指定id\n此时item中的颜色没任何卵用,但可以用来限定边界" />
<View style="@style/line" />
<TextView
style="@style/textview3"
android:background="@drawable/_3_pic_without_id"
android:text="用图片作为Mask\n不指定id" />
<View style="@style/line" />
<TextView
style="@style/textview3"
android:background="@drawable/_3_pic_with_id"
android:text="用图片作为Mask\n指定id" />
<View style="@style/line" />
<TextView
style="@style/textview3"
android:background="@drawable/_4_shape_without_id"
android:text="用shape作为Mask\n不指定id,矩形" />
<View style="@style/line" />
<TextView
style="@style/textview3"
android:background="@drawable/_4_shape_with_id"
android:text="用shape作为Mask\n指定id,圆形" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:background="@drawable/_5_selector_without_id"
android:text="搭配selector使用,不指定id \n将同时具有水波效果和selector效果" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:background="@drawable/_5_selector_with_id"
android:text="搭配selector使用,指定id \n和上面的一样,指定id后选择器效果将丢失" />
<View style="@style/line" />
<TextView
style="@style/textview"
android:background="@drawable/_5_selector_fuza"
android:text="这是一种负责的情况" />
</LinearLayout>
</ScrollView><resources>
<style name="textview">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">50dp</item>
<item name="android:gravity">center</item>
<item name="android:clickable">true</item>
</style>
<style name="textview2">
<item name="android:layout_width">300dp</item>
<item name="android:layout_height">50dp</item>
<item name="android:gravity">center</item>
<item name="android:clickable">true</item>
</style>
<style name="textview3">
<item name="android:layout_width">120dp</item>
<item name="android:layout_height">50dp</item>
<item name="android:gravity">center</item>
<item name="android:clickable">true</item>
</style>
<style name="line">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">#000</item>
</style>
</resources>