小编CFD*_*CFD的帖子

如何在Android中使用SpanWatcher?

我一直试图找到一个解决android长度格式为Spans的问题.我想,好吧,我只会删除长度为零的Spans.经过一番环顾,我认为SpanWatcher是一个很好的方法.但是,似乎缺乏关于如何实现或添加SpanWatchers的示例.

我在MonoDroid中试过这个:

public class PreventZeroLenSpan : Java.Lang.Object, ISpanWatcher
{
    void ISpanWatcher.OnSpanAdded (ISpannable text, Java.Lang.Object what, int start, int end)
    {
        if (what==this) return;
        var CS = what as Android.Text.Style.CharacterStyle;
        if (CS==null) return;
        if (start==end) text.RemoveSpan(CS);
    }

    void ISpanWatcher.OnSpanChanged (ISpannable text, Java.Lang.Object what, int ostart, int oend, int nstart, int nend)
    {
        if (what==this) return;
        var CS = what as Android.Text.Style.CharacterStyle;
        if (CS==null) return;
        if (nstart==nend) text.RemoveSpan(CS);
    }

    void ISpanWatcher.OnSpanRemoved (ISpannable text, Java.Lang.Object what, int start, int end)
    { …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android

6
推荐指数
0
解决办法
2078
查看次数

如何在Android中执行字符串阴影跨度?

正在做一些搜索.我可以看到一个向TextView添加阴影图层的方法,但我只想隐藏一段文本.我基本上在做一个EditText,用户可以在其中更改文本选择的样式.其中一种风格是带有选择颜色的阴影.有颜色,大小,字体等的跨度,但我找不到阴影的东西.

基本上我想做类似的事情:(注意代码来自Mono Droid,但Java答案也会有所帮助)

        var N = new ShadowSpan(color,dx,dy,radius); // no such thing?
        int S = txEdit.SelectionStart;
        int E = txEdit.SelectionEnd;
        Str = new SpannableString(txEdit.TextFormatted);
        Str.SetSpan(N,S,E, SpanTypes.InclusiveInclusive);
        txEdit.SetText(Str, TextView.BufferType.Spannable);
        txEdit.SetSelection(S,E);
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议表示赞赏.我想知道我是否必须弄清楚如何从android.text.style.CharacterStyle派生我自己的ShadowSpan实现(可能在textPaint对象上覆盖updateDrawState()到setShadowLayer?)或者我可能只是错过了简单的答案?我不可能是唯一一个想要这样做的人,所以我想在尝试定制的东西之前我会先问一下.

- 编辑 -

我尝试创建自己的ShadowSpan,它似乎确实有效.如果有人有更好的解决方案,我仍然会开放.它似乎已经存在,但我想我不必做太多.

以下是我在Mono for Android中的内容

public class ShadowSpan : Android.Text.Style.CharacterStyle
{
    public float Dx;
    public float Dy;
    public float Radius;
    public Android.Graphics.Color Color;
    public ShadowSpan(float radius, float dx, float dy, Android.Graphics.Color color)
    {
        Radius = radius; Dx = dx; Dy = dy; Color = …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android

3
推荐指数
1
解决办法
1545
查看次数

标签 统计

android ×2

xamarin.android ×2