有没有办法阻止 ScrollView 在 TextView 聚焦时自动滚动?

该死的蔬菜

如果我第一次单击 text2 或在单击 text1 后单击 text2,则ScrollView似乎将 text2 滚动到顶部。如果我把android:descendantFocusability="blocksDescendants"LinearLayout此滚动不会发生,但我不能选择文本。

我想要的很简单:我不想要这种自动滚动。禁用这种行为是不可能的ScrollView,我必须从头开始创建自己的滚动视图类吗?如果不可能,请将其写为答案,这样我就可以放弃了。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            <TextView
                    android:text="I am text 1. Click me."
                    android:textColor="@color/black"
                    android:textIsSelectable="true"
                    android:background="#FF0000"
                    android:layout_width="match_parent"
                    android:layout_height="400dp"/>
            <TextView
                    android:text="I am text 2. Click me."
                    android:textIsSelectable="true"
                    android:background="#00FF00"
                    android:textColor="@color/black"
                    android:layout_width="match_parent"
                    android:layout_height="1000dp"/>
        </LinearLayout>
</ScrollView>

在此处输入图片说明

马里奥斯

您可以创建 ScrollView 的子类并覆盖受保护的方法:computeScrollDeltaToGetChildRectOnScreen(Rect rect)并返回 0 以禁用自动滚动效果。

computeScrollDeltaToGetChildRectOnScreen

计算在 Y 方向滚动的量,以便在屏幕上完全显示一个矩形(或者,如果比屏幕高,至少是它的第一个屏幕大小块)。

科特林示例:

class CustomScrollView : ScrollView {
    constructor(context: Context?) : super(context) {}
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {}
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}

    override fun computeScrollDeltaToGetChildRectOnScreen(rect: Rect): Int {
        return 0
    }
}

xml用法:

<?xml version="1.0" encoding="utf-8"?>
<mypackagename.com.CustomScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="I am text 1. Click me."
            android:textColor="@color/black"
            android:textIsSelectable="true"
            android:background="#FF0000"
            android:layout_width="match_parent"
            android:layout_height="400dp"/>
        <TextView
            android:text="I am text 2. Click me."
            android:textIsSelectable="true"
            android:background="#00FF00"
            android:textColor="@color/black"
            android:layout_width="match_parent"
            android:layout_height="1000dp"/>
    </LinearLayout>
</mypackagename.com.CustomScrollView>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在出现特定图像(可绘制)时更改 textView?

有没有办法阻止 UIDatePicker 滚动/旋转?

具有动态标签,textview等的XCODE / Swift自动布局ScrollView。如何基于textview设置scrollview的高度

ScrollView自动滚动到可选的TextView

当子节点被聚焦时,有没有办法防止父容器滚动?

仅当不使用VPN时,有没有办法阻止对某些域的访问?

当我滑动时,有没有办法阻止片段 1 转到片段 2?

有没有办法从 Lazyrow 获取滚动状态

有没有办法使水平滚动更流畅

有没有办法自动执行SQL合并?

有没有办法自动创建 TeamCity 项目?

有没有办法自动获取日期

有没有办法让Firefox自动登录网站?

有没有办法自动安装android sdk?

有没有办法防止自动变量删除?

有没有办法自动对模型应用限制?

有没有办法自动强制插件执行

有没有办法设置自动换行断点?

有没有办法自动通勤单子?

使用 MVVM 设计模式时,有没有办法阻止控制器层与模型层快速通信?

有没有办法在登录时绕过.zshrc?

有没有办法将 NavigationView 放在 ScrollView 中?

布局滚动视图中的android textview scrollview

ScrollView没有向下滚动

XAMARIN(C#)-有没有办法以编程方式在TextView下划线?

有没有办法从 TextView 变量中选择特定字符?

有没有办法让某些组件(即 <div> s)在网页上自动滚动?

有没有办法在数据更新时保留 PrimeNG 表滚动位置?

有没有办法在滚动和点击时不显示?