Как предотвратить прокрутку ScrollView вниз, когда у ребенка есть атрибут textIsSelectable = "true"? - PullRequest
0 голосов
/ 13 мая 2019

Ранее это был макет для моего DialogFragment :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".InfoDialog"
    android:id="@+id/scrollView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <!-- (More Views here) -->

    </LinearLayout>

</ScrollView>

Работает нормально. Однако мне нужно сделать textView1 selectable . Но когда я добавляю к нему атрибут android:textIsSelectable="true", scrollView немного прокручивается при отображении диалогового окна. (NB. Я могу прокрутить его вверх, но это явно не решение.)

Я пытался добавить android:descendantFocusability="beforeDescendants" к scrollView , но это не сработало.

Я также пробовал это в моих onCreateDialog() и onViewCreated() методах:

ScrollView scrollView = layoutView.findViewById(R.id.scrollView);
scrollView.fullScroll(ScrollView.FOCUS_UP);
scrollView.scrollTo(0, 0);

Но это тоже не сработало - т. Е. scrollView все еще немного прокручивается при отображении диалога.

Есть идеи?

Обновление:

Использование этого до конца моих onCreateDialog() работ:

ScrollView scrollView = layoutView.findViewById(R.id.scrollView);
scrollView.post(() -> {
    scrollView.fullScroll(ScrollView.FOCUS_UP);
});

Однако это не идеальное решение (особенно, как вы можете видеть, как прокрутка выполняется на экране). Есть ли лучшее решение, желательно xml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...