Android:使多行编辑文本可滚动,在垂直滚动视图中禁用

2023-12-04

我正在开发一个应用程序,其中我在某个点上进行了结构。

根据我的应用程序要求,我在 xml 中创建了水平滚动视图,然后在 .java 中创建了垂直滚动视图,如下所示:

// Vertical Scroll view in Linear layout
ScrollView scrollView = new ScrollView(this);
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

然后我以编程方式创建了一个表视图并将其添加到滚动视图中。我创建多行编辑文本并禁用它,因为我想在运行时设置文本并将其添加到表视图中作为一行。

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editText.setEnabled(false);

tableLayout.addView(editText);

// Add table in Horizontal scroll view
scrollView.addView(tableLayout);

现在我想让编辑文本可滚动,这是通过代码实现的:

editText.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View view, MotionEvent event) {
            if (view.getId() == 1) {
                view.getParent().requestDisallowInterceptTouchEvent(true);
                switch (event.getAction()&MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_UP:
                    view.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                case MotionEvent.ACTION_DOWN:
                    view.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                }
            }
            return false;
        }
    });

但编辑文本不容易滚动。我需要平滑的滚动。

如何做到这一点,请指导我。


你可以做一件事。

只需将编辑文本可聚焦为 false 即可。并应用于触摸监听器。

因此用户无法编辑文本,它将滚动为:

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editTextRemark.setFocusable(false);

将 onTouchListner 应用为:

editTextRemark.setOnTouchListener(touchListener);

and

OnTouchListener touchListener = new View.OnTouchListener(){
    public boolean onTouch(final View v, final MotionEvent motionEvent){
        if(v.getId() == 1){
            v.getParent().requestDisallowInterceptTouchEvent(true);
            switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_UP:
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                break;
            }
        }
        return false;
    }
};

希望这个答案对您有帮助。

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

Android:使多行编辑文本可滚动,在垂直滚动视图中禁用 的相关文章

随机推荐

  • 使用视图代替 INSERT 触发器和标识列

    我正在构建一个数据库来存储公司的客户数据 数据库中的表已标准化 因此我有多个使用外键约束链接在一起的表 Microsoft Access 将用于与数据库交互 作为前端 为了使事情变得更简单 我创建了一个视图 将所有必需的表连接在一起 以便最
  • 如何实现独立克隆TADODataSet?

    场景是这样的 我们有一些 SQL 表 我们正在该表上执行 SQL 查询 并且我们在 TADOQuery 对象中得到结果 var qryOryginal qryClone TADOQuery begin setup all the thing
  • 如何针对需要身份验证令牌的 API 验证协议?

    我正在使用Pact我的合同测试套件的宝石 并且喜欢它 我正在测试的 API 服务需要所有请求的授权令牌 我知道如何为我的用户生成 API 令牌 但我不知道将该令牌放置在 Pact 工作流程中的何处 我搜索了 Pact 文档和存储库中的示例
  • UNIX Case 语句中的模式匹配

    我正在使用一个 shell 脚本 我需要在其中区分tar gz gz bz etc 我首先提取文件的扩展名 然后尝试使用它来匹配它case我的第一个案例是 tar 应该将文件与tar在它们的扩展中 因为可以使用相同的命令提取它们 问题是我试
  • EnumChildWindows 中的 MoveWindow 对对话框内的 listview 的影响:为什么 ListView 标题未正确滚动

    我有一个listview控制 lvc 它在一个DialogBox dbx 并且 dbx 也有一个垂直滚动条 每当滚动条滚动时EnumChildWindows调用以枚举 dbx 的所有子窗口 回调函数包含一个MoveWindow可以移动该 l
  • 无法安装 xkcd 字体

    我正在按照小插图中给出的说明尝试 xkcd 字体 vignette xkcd intro 但是执行以下步骤时出现错误 gt system cp xkcd tff t fonts cp xkcd tff No such file or dir
  • 使用sql查询将图像大小从150 * 150更改为70 * 70?

    我将图像存储在 SQL Server 2008 R2 数据库中名为 image1 的 varBinary max 列中 其大小为 150 150 我添加了另一列名为 image2 varBinary max 的列 我需要使用 image1
  • Firefox 文本区域大小调整错误?

    我正在尝试仅使用 CSS 创建一个固定的文本区域来填充浏览器窗口的整个宽度和高度 并且以下内容在 Chrome 中完美运行 textarea border 2px solid 3D6AA2 padding 5px position fixe
  • 从 MSBuild 发布中排除“.js”文件,但不排除“.min.js”文件

    使用 Visual Studio 和 MSBuild 我希望能够排除所有 js文件并包含所有 min js我的部署中的文件 我知道这可以使用 Visual Studio 中的文件属性来实现 但这不是一个选项 因为文件太多了 我有以下内容Pu
  • 数组初始化函数

    我在玩 C 时偶然发现了这个问题 我正在尝试初始化堆上的数组指针 它在initialize 它输出的地方69 但在main 它因错误而崩溃EXC BAD ACCESS include
  • 在 Java 中将 MP3 转换为 PCM

    我想用Java将MP3文件转换为PCM 怎么做 Get the mp3plugin jarJMF 的 将其添加到应用程序的运行时类路径中 为MP3提供解码器SPI Get an AudioInputStream对于 MP3 从AudioSy
  • Chrome 扩展程序弹出窗口关闭时是否有事件?

    我已经尝试过 window unload window beforeunload 等 我正在寻找一种在弹出窗口关闭后通知我的后台页面的方法 你可以试试这个 连接到您的后台页面chrome runtime connect or chrome
  • InnoSetup,展开环境变量(使用 {reg:...} 从注册表值获取)

    我尝试从注册表设置默认安装路径 DefaultDirName reg HKCU Software Microsoft VisualStudio 14 0 VisualStudioLocation userdocs Visual Studio
  • 如何将大写字母更改为小写字母,将空格更改为下划线

    我想将变量中的大写字符串字符更改为小写 并将空格替换为 我知道我可以对所有实例使用 if 语句 但这会花费太长时间 它将用户的输入保存到文件名中 即 user selection Barracuda Limited what I have
  • 如何将包含图像的跨度置于 div 中居中

    我有一个主 div homeGallery 其中有一个 span imgClass 用于加载图像列表之一 我需要图像在 div 中不仅垂直居中而且水平居中 到目前为止我有这段代码 homeGallery gt imgClass margin
  • 将 base64 字符串转换为 ArrayBuffer

    我需要将 Base64 编码字符串转换为 ArrayBuffer Base64 字符串是用户输入 它们将从电子邮件中复制并粘贴 因此在加载页面时它们不存在 如果可能的话 我想在 javascript 中执行此操作 而不对服务器进行 ajax
  • 如何在 Go 中向子路由器添加中间件?

    我有以下代码 apiRouter mux NewRoute PathPrefix Subrouter Bucket router bucket apiRouter PathPrefix bucket Subrouter bucket Met
  • 通过 PayPal 和信用卡接收付款

    我正在开发一个网站 我需要从 PayPal 和信用卡接收付款 问题是我对此一无所知 我的问题是我在哪里可以找到一些很好的资源来帮助我 或者如果您有一些示例代码 一切可以帮助我的东西 多谢 如果您计划集成 Paypal 您会发现 Paypal
  • 如何向单个sql命令添加超过10000个参数

    我想向单个 sql 命令添加超过 10000 个参数 怎么可能呢 据我所知 一个sql命令有2100个参数 我认为你应该回到 为什么 而不是直接跳到 如何 听起来也许您正在执行一些巨大的插入 更新 在这种情况下 更合适的解决方案是表值参数
  • Android:使多行编辑文本可滚动,在垂直滚动视图中禁用

    我正在开发一个应用程序 其中我在某个点上进行了结构 根据我的应用程序要求 我在 xml 中创建了水平滚动视图 然后在 java 中创建了垂直滚动视图 如下所示 Vertical Scroll view in Linear layout Sc