setText方法对动态设置MaskFilterSpan的EditText没有影响

时间:2013-04-17 14:00:06

标签: android android-edittext settext spannable

环境:Android 4.2

布局/ activity_main.xml中

<EditText
    android:id="@+id/et_content"
    android:background="#AAAAAA"
    android:layout_width="match_parent"
    android:textSize="40sp"
    android:layout_height="match_parent"
    android:gravity="left|top" >

    <requestFocus />
</EditText>

测试1 (成功!有效果):

SpannableStringBuilder spanText = SpannableStringBuilder.valueOf("abcdefghijklmnopqrstuvwxyz");
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, spanText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
etContent.setText(spanText);

测试2 (失败!没效果,为什么???):

String str = etContent.getText().toString();
SpannableStringBuilder spanText = SpannableStringBuilder.valueOf(str);
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, etContent.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
etContent.setText(spanText);

区别在于代码的第二段是从EditText获得的数据。 第二个代码使用 String str = etContent.getText()。toString(); 我在第一段代码之前尝试添加代码editText.setText(&#34; 123456&#34;),并发现模糊效果也失败。

谁能帮帮我?

1 个答案:

答案 0 :(得分:1)

如果在AndroidManifest.xml中的Activity上设置android:hardwareAccelerated =“false”,它会正确呈现。

硬件加速不支持BlurMaskFilter。

http://developer.android.com/guide/topics/graphics/hardware-accel.html