【问题标题】:setText method has no effect on EditText with dynamic setting MaskFilterSpansetText 方法对动态设置 MaskFilterSpan 的 EditText 没有影响
【发布时间】:2013-04-17 14:00:05
【问题描述】:

环境:Android 4.2

layout/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("123456"),发现模糊效果也失败了。

谁能帮帮我?

【问题讨论】:

  • 在android 2.2有效果,但是在android 4.2没有效果,为什么?

标签: android android-edittext settext spannable


【解决方案1】:

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

硬件加速不支持 BlurMaskFilter。

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

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多