ViewPager内的ScrollView,自动滚动到中间

2024-03-07

我有一个 ViewPager,其中包含同一片段的多个实例,该片段包含一篇文章。文章视图层次结构非常简单,一个标题、一个横幅图像、一个副标题和一个正文;除了标题之外的所有内容都包含在滚动视图中。

问题是,当您滑动到新页面时,片段会在顶部显示视图,然后立即滚动到容器的中间。 (事实上​​,它滚动到 id 为 TextView 的开头:文章内容)

我已将布局发布在问题的底部。

现在,ViewPager 通过一个简单的实现来设置FragmentStatePagerAdapter,这是代码:

class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

    Bundle args;
    int count;

    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
        this.count = 8;
    }

    @Override
    public Fragment getItem(int position) {
        ArticleFragment mPrimaryFragment = new ArticleFragment();
        args = new Bundle();
        args.putString(ArticleFragment.KEY_ARTICLE_URL, mCurArticleLink);
        mPrimaryFragment.setArguments(args);
        return mPrimaryFragment;            
    }

    @Override
    public int getCount() {
        return count;
    }   
}

Fragment 本身也非常简单。首先,我检查期间onCreate要查看我们是否缓存了该文章,我调用onCreateView

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.apk_article_view, null);

    mTitle = (TextView) view.findViewById(R.id.article_title);
    mBanner = (ImageView) view.findViewById(R.id.article_banner);
    mSubTitle = (TextView) view.findViewById(R.id.article_subtitle);
    mContent = (TextView) view.findViewById(R.id.article_content);

    if (isArticleCached) {
        Constants.logMessage("Article is cached, loading from database");
        setApkArticleContent();
    }
    else {
        Constants.logMessage("Article isn't cached, downloading");
        HtmlHelper.setApkArticleContent(mContext, mUrl, mTitle, mSubTitle, mContent, mBanner);
        setRefreshing(true);
    }

    return view;
}

值得一提的是setApkArticleContent是一组简单的文本,没什么花哨的:

private void setApkArticleContent() {
    mTitle.setText(Html.fromHtml(mCursor.getString(mCursor.getColumnIndex(DbOpenHelper.TITLE))));
    mSubTitle.setText(Html.fromHtml(mCursor.getString(mCursor.getColumnIndex(DbOpenHelper.SUBTITLE))));
    mContent.setText(Html.fromHtml(mCursor.getString(mCursor.getColumnIndex(DbOpenHelper.BODY))));
    UrlImageViewHelper.setUrlDrawable(mBanner, mCursor.getString(mCursor.getColumnIndex(DbOpenHelper.BANNER)));     
}

另外,请知道我以前没有寻呼机,该片段仅加载到一个空活动中,并且它无需滚动到滚动视图的中间即可工作.

我真的不确定是什么触发了滚动,是的,我知道我可以以编程方式将其设置为在加载后滚动回顶部,但话又说回来,加载片段时会出现两次滚动运动,并且会是对于用户来说非常明显。

你们知道为什么它会这样吗?关于如何阻止这种无意的滚动有什么想法吗?

Thanks,

以下是 ArticleFragment 的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/article_title"
    style="@style/headerTextBoldNoUnderline"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left|center_vertical"
    android:text="" />

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

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

        <ImageView
            android:id="@+id/article_banner"
            android:layout_gravity="center_vertical|center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp" />

        <TextView
            android:id="@+id/article_subtitle"
            style="@style/HeaderTextItalicNoUnderline"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="left|center_vertical" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="?android:attr/dividerVertical" />

        <TextView
            android:id="@+id/article_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:gravity="left|center_vertical"
            android:padding="8dp"
            android:textColor="?android:attr/textColorSecondary"
            android:textIsSelectable="true"
            android:textSize="16sp" />
    </LinearLayout>
</ScrollView>

</LinearLayout>

这可能是由于android:textIsSelectable。您可以尝试将以下内容添加到 ScrollView 中:

android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewPager内的ScrollView,自动滚动到中间 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • 创建自定义事件 - 对象发送者还是类型发送者?

    我搜索了档案 发现了很多关于发件人是什么以及为什么应该使用该模式的问题 但我没有看到任何有关自定义事件和type如果发件人 假设我正在创建一个名为 Subscription 的自定义类 它实现了 ISubscription 并且我有一些名为
  • removeAllCachedResponses无法清除sharedURLCache?

    我做了一个按钮来清除缓存 NSURLCache sharedURLCache removeAllCachedResponses 完成此操作后 我检查sharedURLCache的大小 NSInteger sizeInteger NSURLC
  • 向 jsTree 添加 jQuery 自定义图像工具提示

    这基本上是后续这个问题 https stackoverflow com questions 7096803 jquery jstree add a tooltip 我正在尝试向 jstree 添加自定义工具提示 如果将鼠标悬停在图像文件上
  • Dapper 和枚举作为字符串

    我正在尝试使用Dapper and Dapper Extensions并序列化我的enums在数据库上为string 现在它们被序列化为整数 在VARCHAR字段 代替 有什么办法可以做到这一点吗 我可以添加任何自定义类型映射吗 如果我不能
  • 将 URI 与 AndroidManifest 中的 相匹配,例如 http://example.com/something

    我正在努力应对
  • 如何使用 WSO2 API Manager 将租户设置为调解器中的标头

    我有一个 API 需要租户作为标头 如果我创建一个自定义顺序
  • laravel查询,多余的行将被插入到表格发票详细信息中。例如FROM表包含6行,执行TO表后将有21行

    ar po id variableAry explode ar foreach variableAry as var1 details11 DB table po estimations gt where po number var1 gt
  • 嵌套角度材质选项卡

    我需要向某些添加动态选项卡User Preferences屏幕 主首选项选项卡可以是具有静态内容的静态选项卡 但第二个选项卡应该嵌套mat tab元素 这些额外的动态首选项来自后端 然后我可以使用 ngFor渲染额外的选项卡 我现在看到的问
  • 处理 CloudKit 错误

    我正在寻找有关在 Swift 中处理 CloudKit 错误的一般建议 但在网上找不到好的示例 这是我想知道的事情 1 每次出现错误的可能性时 我是否应该考虑每种错误类型 或者这实际上没有必要 2 我读到 处理 CloudKit 错误的一种
  • Puppeteer:屏幕截图惰性图像不起作用[重复]

    这个问题在这里已经有答案了 我似乎无法捕获屏幕截图https today line me HK pc https today line me HK pc成功地 在我的 Puppeteer 脚本中 我还启动了滚动到页面底部并再次向上滚动以确保
  • Pandas Dataframe - 值是列表

    我有一个只有一列的 Pandas Dataframe 但每一行的值都是五个元素的列表 如下所示 Column timestamp 06 54 00 1 2 3 4 5 06 55 00 0 5 2 3 4 5 1 3 我想分离数据 以便获得
  • 为什么向量中的分配器是 const ?

    向量在每种类型的构造函数中都有这个 const allocator type alloc allocator type 为什么它是常量 我不明白这有什么用处 我可以看到传入一个分配器 因此多个向量可以共享同一个池 但可以与另一组向量分开 但
  • 像 Matlab 一样的 gnuplot ytics 表示法

    我想设置 ytics 符号 就像这个 Matlab 图 图形框上只有一个 x10 5 一样 是否可以 你当然可以这样做by hand在 gnuplot 中 使用enhanced许多终端的选项并设置label set terminal png
  • 无法理解 a = b = 0 的目的;

    我目前正在阅读 Java 初学者指南 书中的某些地方有一段代码让我感到困惑 但我找不到它的作用的解释 int a int b a b 0 This is the line I don t understand 我所理解的是 0 的值被复制到
  • 如何使数据库大小超过 256 字节 [链接器文件 - MPLAB ]

    我有 PIC18F87J11 系列 并且正在使用 MPLAB C18 编译器 我可以给以下变量的最大字节是多少 我知道我必须修改链接器文件才能达到 256 字节以上 pragma udata CONNECTION TABLE 这是我干净的链
  • Scala 中的执行上下文是什么?

    我是 Scala 新手 正在尝试使用一些并行结构 Future尤其 我发现有一个类型的隐式参数ExecutionContext IMO 它类似于 并且可能比 线程池的概念 我试图通过学习它文档 http docs scala lang or
  • Microsoft UI 自动化教程/参考 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近使用 Microsoft Accessibility API 实现了一个程序 但后来被告知新的
  • 使用双重哈希时,最佳的第二哈希函数是什么?

    我在一些人们使用的论坛上看到 7 key mod 7 or 6 key mod 6 这用于为任何大的键值计算双哈希的第二个哈希函数 使用 6 甚至不是素数 或 7 有什么重要性吗 或者它只是随机生成一些值 与线性探测和二次探测不同 参考 h
  • nbconvert 多索引数据帧到乳胶

    我正在尝试使用 ipython 的 nbconvert 将多索引 Pandas DataFrame 导出到乳胶 但多索引行结果都是错误的 我在代码开头使用以下代码来正确转换为乳胶 我在 SO 上的某个地方找到了它 但不记得在哪里 from
  • ViewPager内的ScrollView,自动滚动到中间

    我有一个 ViewPager 其中包含同一片段的多个实例 该片段包含一篇文章 文章视图层次结构非常简单 一个标题 一个横幅图像 一个副标题和一个正文 除了标题之外的所有内容都包含在滚动视图中 问题是 当您滑动到新页面时 片段会在顶部显示视图