Как применить горизонтальный затухающий край в последней строке MaxLine TextView - PullRequest
0 голосов
/ 23 апреля 2019

Я хотел бы реализовать поведение затухания края для TextView, как это делает Google Play Movie:

enter image description here

Как вы можете видетьпоследние буквы третьей строки имеют эффект затухания.Есть ли способ добиться этого для конкретной строки, определенной через android:maxLines?(Например, android:maxLines="3")

Я пробовал следующее, но оно работает только с атрибутом android:singleLine, который не является моей целью:

<TextView
    ...
    android:requiresFadingEdge="horizontal"
    android:fadingEdgeLength="30dp"
    android:ellipsize="none"
    android:singleLine="true" />

Вместо этого здесь устанавливается android:maxLinesрезультаты не исчезают совсем.

Редактировать / Дополнительно:

Ранее я также пробовал Shader с LinearGradient при расширении TextView как здесь , но описанное решение применяет фон / передний план (а также были некоторые другие проблемы с ним ...).

Я хотел бы применить Gradient к последним 3-4 символа строки maxLine.Может ли это быть возможно?

1 Ответ

0 голосов
/ 23 апреля 2019

Попробуйте это .. Надеюсь, это сработает

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 = color;
   }

   public override void UpdateDrawState (TextPaint tp)
   {
     tp.SetShadowLayer(Radius, Dx, Dy, Color);
    }
}
...