是否可以将可滚动的 TextView 添加到 ListView 中?

2023-11-30

我有一个 ListView,其中每行都有固定的高度。
每行在一些图像旁边都包含一个 TextView。
有时,我想要显示的文本太大,因此我想使其可滚动。
所以我添加了(基于使 TextView 在 Android 上可滚动)将以下行添加到我的 TextView

text.setMaxLines(5);
text.setVerticalScrollBarEnabled(true);
text.setMovementMethod(ScrollingMovementMethod.getInstance());

如果我单独使用 TextView,则效果很好,但当我将 TextView 放入 ListView 时则效果不佳:
一旦我进行垂直滚动,事件似乎就会被 ListView 消耗。

关于我如何完成这项工作有什么建议吗?

下面添加了完整的(测试)活动(无layout.xml)

public class TestScrollableTextView extends Activity
{ 
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    LinearLayout layout = new LinearLayout(this);
    //add a ListView
    ListView list = new ListView(this);
    layout.addView(list);
    list.setAdapter(new BaseAdapter()
    {

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            TextView text = new TextView(TestScrollableTextView.this);
            String s = "";
            //add 10 lines of text, all but first are indented
            for (int i = 0; i < 10; i++)
            {
                if(i>0) s+="\t";
                s += "position "+position+"; line="+i+"\n";
            }
            text.setText(s);                
            text.setMaxLines(5);
            text.setVerticalScrollBarEnabled(true);
            text.setMovementMethod(ScrollingMovementMethod.getInstance());
            return text;
        }

        @Override
        public long getItemId(int position)
        {
            return 0;
        }

        @Override
        public Object getItem(int position)
        {

            return null;
        }

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

      setContentView(layout);

  }
}

getLineCount 和 getLineHiegt 并检查 Text 是否大于 TextView。

如果您使用此代码,则可以通过使用 (boolean)isLarger = true 触摸 TextView 以外的任何位置来滚动 listView。

text.setText(s);                
text.setMaxLines(100);
text.setVerticalScrollBarEnabled(true);
text.setMovementMethod(new ScrollingMovementMethod());
OnTouchListener listener = new OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
                boolean isLarger;

                isLarger = ((TextView) v).getLineCount()
                        * ((TextView) v).getLineHeight() > v.getHeight();
                if (event.getAction() == MotionEvent.ACTION_MOVE
                        && isLarger) {
                    v.getParent().requestDisallowInterceptTouchEvent(true);

                } else {
                    v.getParent().requestDisallowInterceptTouchEvent(false);

                }
                return false;
            }
        };

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

是否可以将可滚动的 TextView 添加到 ListView 中? 的相关文章

随机推荐

  • php 邮件功能不发送电子邮件/发送电子邮件花费太长时间

    我有一个机架空间云 我想在其中设置 LAMP 服务器有CentOS 我安装了sendmail并且php邮件功能使用这个 但是使用php邮件功能发送电子邮件需要很长时间
  • Spark SQL - 转义查询字符串

    我不敢相信我会问这个但是 如何使用 SCALA 在 SPARK SQL 中转义 SQL 查询字符串 我已经厌倦了一切 到处寻找 我认为 apache commons 库可以做到这一点 但没有运气 import org apache comm
  • 如何更改 Handsontable 中已更改单元格的颜色?

    我正在使用 Handsontable 插件 当用户更改单元格中的值时 它应该变成黄色 以便他们可以跟踪更改的内容 在本例中 黄色是类 changeInput 棘手的部分是 当您双击单元格进行更改时 它会变成文本区域 而不再是 td 有任何想
  • 在 matplotlib 中显示表面前面的轮廓

    我一直在寻找答案 但我似乎不明白为什么在我的代码中我无法让投影轮廓显示在表面 后面 from mpl toolkits mplot3d import axes3d import matplotlib pyplot as plt from m
  • 使用 Selection 的 RangeElements 获取 Google 文档中的所有嵌套文本元素

    在类似于上面的文档中 我可以使用以下代码获取所有段落 var paras body getParagraphs 请注意 上面的代码不仅返回顶级段落 还返回内部的所有子级别段落ListItems Tables etc 如何在选定的范围内做同样
  • 如何处理 Angular 4 中的窗口滚动事件?

    我似乎无法捕获窗口滚动事件 在几个网站上我发现了类似的代码 HostListener window scroll onWindowScroll console log Scrolling 这些片段通常来自版本 2 这在 Angular 4
  • 将内部文本文件加载为 XML

    我正在编写一个 VB NET 应用程序 我想从资源加载内部文本文件 但代码显示无效 URI Uri 字符串太长 代码是 document Load C Users Sou Documents Visual Studio 2010 Proje
  • 在交替行上交换列(左/右)

    我有一系列行 每行包含两列 宽度按 50 50 分开 我希望每隔一行交换左列 image 在右边 但我需要维护 HTML 中的顺序 因为它在较小的屏幕上显示为一列 CSS ul list style none padding left 0
  • 变量赋值后的尾随注释颠覆比较

    在 GNU make 中 附加到变量赋值的尾随注释会阻止后续比较 通过ifeq 无法正常工作 这是生成文件 A a B b trailing comment C c RESULT ifeq A a RESULT a endif ifeq B
  • DataTables 警告 - 请求第 0 行、第 0 列的未知参数“0”

    我使用 jQuery DataTable 来显示使用存储过程和 Web 服务从数据库获取的数据 我可以使用 Fiddler 运行 SP 或服务 但是当涉及到填充 DataTable 时 我收到了错误记录here 在我的具体情况下 消息是 D
  • 我如何使用注释进行聚合,如 @Query(value = "{"query":""}")

    如何使用注释通过 spring data elasticsearch 进行像 Query value query 这样的聚合 你不能用 Query注释的唯一目的是发送查询 而不是聚合 使用 Spring Data Elasticsearch
  • 将字符串替换为 DataTable 的 DataColumn 中的另一个字符串

    I have DataTable它检索多列和行 其中一栏 评论 包含数据 我想用 n dtOutput Generix getTickets DateTime Parse 1 1 1900 DateTime Now iTicket iDis
  • android:安装应用程序无需用户干预

    我想在 Android 上安装应用程序而无需用户干预 我正在使用权限INSTALL PACKAGES我正在将应用程序安装在 download 文件夹中 下载完成后 会出现一个对话框 要求我安装该应用程序 如何隐藏此对话框并在无需用户干预的情
  • POSIX 正则表达式不适用于 [:digit:] 字符类

    我在日志文件中有以下日志行access 20170118 14 log 127 0 0 1 18 Jan 2017 14 22 16 0000 GET fam shared generate test devicelist php HTTP
  • Delphi:为什么断点有时不可用(IDE 上的绿色突出显示线)?

    有时我会失去 Delphi 中的断点功能 我认为这是 Delphi 2009 的问题 但现在我在 Delphi XE 中也有它 在 Delphi 2009 中 通过删除 dproj 文件 我使断点再次起作用 在 Delphi XE 中 我无
  • 不允许销毁资产以避免数据丢失

    我的RemoveTail 函数执行以下代码时遇到了麻烦 destroy gameObject 这个蛇游戏创建了我的蛇预制件的克隆 我通过分配 尾巴 来控制蛇的长度 并在达到 maxSize 时删除 尾巴 游戏对象 我知道我的错误是由于游戏删
  • ImageMagick 将 jpg 图像转换为 gif 速度慢

    我正在使用Magick IM 7 0 3平台 CentOS Linux版本7 0 将图像转换为gif 我从文件创建 Image 对象 问题是当我将 9 个 png 文件 每个 50kb 转换为 gif 时 只需要 50ms 但当变成9个jp
  • 类别重叠分析

    我正在尝试执行一些类别重叠分析并需要帮助 我有由客户服务票组成的数据 门票上标有类别数据 票证可以包含多个类别标签 我有一个提取票证 ID 和类别的查询 我得到多行包含多个类别的 ID 我正在寻找一种显示类别重叠的方法 例如 有多少票有类别
  • 获取当前地址位置的最佳方式 Kotlin 2023

    我想创建一个当前位置按钮来获取用户的当前地址 目前我正在使用fusedLocationClient lastLocation但它很慢 有时甚至不起作用 2023 年是否有更好且更新的方法使用 Kotlin 从用户处获取当前地址 祝你今天过得
  • 是否可以将可滚动的 TextView 添加到 ListView 中?

    我有一个 ListView 其中每行都有固定的高度 每行在一些图像旁边都包含一个 TextView 有时 我想要显示的文本太大 因此我想使其可滚动 所以我添加了 基于使 TextView 在 Android 上可滚动 将以下行添加到我的 T