当孩子具有textIsSelectable =“ true”属性时,如何防止ScrollView向下滚动?

时间:2019-05-13 10:22:55

标签: android android-scrollview

以前,这是我的 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 可选。但是,当我向其中添加android:textIsSelectable="true"属性时,显示对话框时 scrollView 会向下滚动一点。 (注意-我可以手动将其向上滚动到顶部,但这显然不是解决方案。)

我尝试将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?

0 个答案:

没有答案