Как сделать такое же поведение виджета?

есть приложение google play. Я делаю подобное приложение, ну как подобное, парсер кода с расцветкой. И что-то мне подскажывает что они не используют Html.Parse. Я использую Html.Parse. то есть парсю код и перевожу в html вид. У них виджет можно двигать по диагонали, как это можно сделать? Может у них кастомный виджет какой то? Я использую TextView. я сделал вот так, но в таком случае можно двигать либо сначала вверх-вниз, либо влево-вправо. И если текста мало, не занимает весь экран, то scroll кончается в конце текста, в середине экрана телефона, как эту проблему решить?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#3c3c3c"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <RelativeLayout
        android:id="@+id/relative"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

        <ProgressBar
            android:id="@+id/progressbar"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </RelativeLayout>
    <androidx.appcompat.widget.Toolbar
        android:background="@color/back_toolbar"
        android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"
        android:elevation="4dp"
        android:id="@+id/toolbar_view_file"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        />



    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <TextView
            android:ellipsize="end"
            android:scrollHorizontally="true"
            android:fontFamily="@font/terminus"
            android:overScrollMode="always"
            android:id="@+id/text_view"
            android:textSize="18sp"
            android:background="#3c3c3c"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    </HorizontalScrollView>
    </ScrollView>

</LinearLayout>

Ответы (1 шт):

Автор решения: Ann Developer

Вот к примеру кусок реализации драг&дропа TextView:

textView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction())
                {
                    case MotionEvent.ACTION_DOWN:
                        start_x=event.getX();
                        start_y=event.getY();
                        break;
                    
                    case MotionEvent.ACTION_UP:
                        break;
                    
                    case MotionEvent.ACTION_MOVE:
                        FrameLayout.LayoutParams params = 
                              new FrameLayout.LayoutParams(1000, 2000);
                        params.setMargins(
                               (int)(event.getX()-start_x), 
                               (int)(event.getY()-start_y), 
                               0, 0);
                        textView.setLayoutParams(params);
                        break;
                    
                }
                return false;
            }
        });
→ Ссылка