Emoji становится невидимым при масштабировании TextView - PullRequest
1 голос
/ 02 июля 2019

У меня есть текстовое представление, и когда я добавляю смайлики и масштабирую его, мои эмодзи исчезают, и только текст остается в масштабированном виде.

private class ScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {

        private float mPivotX;
        private float mPivotY;
        private Vector2D mPrevSpanVector = new Vector2D();

        @Override
        public boolean onScaleBegin(View view, ScaleGestureDetector detector) {
            mPivotX = detector.getFocusX();
            mPivotY = detector.getFocusY();
            mPrevSpanVector.set(detector.getCurrentSpanVector());
            return true;
        }

        @Override
        public boolean onScale(View view, ScaleGestureDetector detector) {
            TransformInfo info = new TransformInfo();
            info.deltaScale = isScaleEnabled ? detector.getScaleFactor() : 1.0f;
            info.deltaAngle = isRotateEnabled ? Vector2D.getAngle(mPrevSpanVector, detector.getCurrentSpanVector()) : 0.0f;
            info.deltaX = isTranslateEnabled ? detector.getFocusX() - mPivotX : 0.0f;
            info.deltaY = isTranslateEnabled ? detector.getFocusY() - mPivotY : 0.0f;
            info.pivotX = mPivotX;
            info.pivotY = mPivotY;
            info.minimumScale = minimumScale;
            info.maximumScale = maximumScale;
            // ((ImageEditingActivity) context).setScalingInfo(info,view,-1,view.getTranslationX(),view.getTranslationY());
            move(view, info);
            return false;
        }
    }

  public void move(View view, TransformInfo info) {
        computeRenderOffset(view, info.pivotX, info.pivotY);
        adjustTranslation(view, info.deltaX, info.deltaY, view.getTranslationX(), view.getTranslationY());

        float scale = view.getScaleX() * info.deltaScale;
        scale = Math.max(info.minimumScale, Math.min(info.maximumScale, scale));
        view.setScaleX(scale);
        view.setScaleY(scale);

        if (view.getTag() != null && view.getTag() instanceof TextLabelModel) {
            TextLabelModel model = (TextLabelModel) view.getTag();
            model.setScaleFactor(scale);

        } else {
            TextLabelModel model = new TextLabelModel();
            model.setScaleFactor(scale);
            view.setTag(model);
        }

        float rotation = adjustAngle(view.getRotation() + info.deltaAngle);
        view.setRotation(rotation);
    }


    public void adjustTranslation(View view, float deltaX, float deltaY, float translationX, float translationY) {
        float[] deltaVector = {deltaX, deltaY};
        view.getMatrix().mapVectors(deltaVector);
        view.setTranslationX(translationX + deltaVector[0]);
        view.setTranslationY(translationY + deltaVector[1]);
    }

1 Ответ

0 голосов
/ 17 июля 2019

У меня тоже есть эта проблема, и я решаю ее, установив

textView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

для получения более подробной информации, перейдите по этим ссылкам

Why imageView.setLayerType (View.LAYER_TYPE_SOFTWARE, null);а также

...