使子视图与父滚动视图的宽度匹配

2024-04-14

我有一个带有许多 EditText 子项的水平滚动视图。我希望这些子级中的每一个都与父级滚动视图的可见区域具有相同的宽度。这在 XML 中可能吗?


您可以编写一个小辅助类来做到这一点:

我们正在创建一个非常小的类来扩展EditText called FullWidthEditText像这样:

package com.YOURPACKAGENAME;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.HorizontalScrollView;

public class FullWidthEditText extends EditText {
    public FullWidthEditText(Context context) { super(context);}    
    public FullWidthEditText(Context context, AttributeSet attrs) { super(context, attrs); }
    public FullWidthEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        View parentScrollView=((View)(getParent().getParent()));

        if (parentScrollView!=null) {
            // check the container of the container is an HorizontallScrollView
            if (parentScrollView instanceof HorizontalScrollView) {
                // Yes it is, so change width to HSV's width
                widthMeasureSpec=parentScrollView.getMeasuredWidth();
            }
        }
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
    }
}

现在你已经创建了这个类,你可以在 XML 中使用它,就像普通的 EditText 一样:

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/horizontalScrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffff0000" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_marginRight="5dp"
        android:orientation="horizontal" >

        <com.YOURPACKAGENAME.FullWidthEditText
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/yourEditTextId">
        </com.YOURPACKAGENAME.FullWidthEditText>

        <com.YOURPACKAGENAME.FullWidthEditText
            android:layout_width="wrap_content"
            android:layout_height="match_parent" >
        </com.YOURPACKAGENAME.FullWidthEditText>
        .
        .
        .
    </LinearLayout>
</HorizontalScrollView>

您还可以以编程方式创建它,添加处理程序、侦听器、更改文本、findViewById ...等等...就像普通的 EditText 一样。

 EditText editText=new EditText(context);
 FullWidthEditText fullWidthEditText=new FullWidthEditText(context);
  • 请注意,此解决方案也适用于任何其他小部件。如果你需要即。全角按钮,只需更改extends EditText for extends Button你明白了。

  • 您可以轻松定制尺寸,关键是:widthMeasureSpec=parentScrollView.getMeasuredWidth();所以你可以即。使全宽减 10 或 20px,使半宽等。

希望能帮助到你 !

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

使子视图与父滚动视图的宽度匹配 的相关文章

随机推荐

  • HTTP_REFERER 空白,需要替代

    我有一个简单的注册表单 需要跟踪来自一个特定外部引用者的点击次数 这是 PHP 的一个简单任务 SERVER HTTP REFERER 然而 它是空白的 经过一些研究后 我尝试使用一些 javascript document referre
  • 使用 matplotlib 在对数图中设置轴限制

    如何在使用 matplotlib 绘制的点周围创建空间 For example in this plot the bottom left point is cutoff by the axis but I would like a litt
  • 如何判断 HTML5 音频元素何时播放完毕?

    如何判断 HTML5 音频元素何时播放完毕 它会引发我可以收听的事件或类似的事件吗 我需要在音轨结束时做出反应 Thanks 使用 HTML
  • 我可以在不使用本地工作副本的情况下将新文件夹添加到 TFS 存储库服务器端吗?

    我目前正在将一些源代码从 Subversion SVN 存储库传输到我客户的 Team Foundation Server 我偶然发现的一件事是 如果不首先将该存储库中的所有文件拉到本地工作区中的本地工作文件夹 则似乎无法编辑存储库 我正在
  • 如何在 Github Actions 中设置机密?

    官方样板代码注入npm token如下 NODE AUTH TOKEN secrets npm token 如何访问和设置该变量 我在 GUI 中找不到它 转到您在 Github 中的项目 选择Settings tab 点击Secrets左
  • 通过 Laravel 中的链接 href 传递 id

    是否可以通过 Laravel 中的链接 href 传递 id 并显示该页面 例如 projects display 2 我有这个链接 td a href class btn btn info View a td 当鼠标悬停在链接上时 它将
  • 如何使 extjs 手风琴垂直滚动

    在这里摆弄 https fiddle sencha com fiddle 5gv 如果手风琴中有很多面板 它们就会在垂直方向上相互碰撞 并且无法扩展 我想让手风琴的总高度等于标题的高度加上一个面板主体的高度 展开 然后父面板应该只有一个滚动
  • 自 2012 年底起实施@font-face

    我花了几个晚上研究在当今的现代浏览器中实现 font face 的最佳方法 我是一名全职网络 系统开发人员 具有图形设计师的背景 我发现网页设计的机会和可能性变得越来越有趣 因此 我做了一些测试 想听听是否有人对此有建议 更好的想法或意见
  • 禁用所有操作的浏览器缓存,但保留捆绑包的浏览器缓存

    在我正在开发的 MVC 应用程序中 出于安全原因 我们必须阻止所有操作的浏览器缓存 防止用户在注销后返回历史记录 我们使用以下方法实现了这一点这个解决方案 https stackoverflow com a 5664481 2123652
  • 使用 SQL 将多个字段连接成一个

    我有三张桌子tag page pagetag 有了下面的数据 page ID NAME 1 page 1 2 page 2 3 page 3 4 page 4 tag ID NAME 1 tag 1 2 tag 2 3 tag 3 4 ta
  • 如何在 Quarkus 中处理大文件上传

    我的问题有两个 我正在寻找一种在 quarkus 应用程序服务器上实现分段文件上传的方法 该服务器允许程序员访问上传的文件 浏览文档似乎有https quarkus io guides rest client multipart https
  • 使用 VSCode“切换行注释”命令时更改注释符号位置

    是否可以在 VSCode 中自定义注释符号 使用 Python 时为 的位置 例如 如果我的代码是 def my func value 1 我在第 2 行按 CMD 我得到 def my func value 1 我更愿意得到 def my
  • 如何构建此 SQL 查询。合并多个表? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 注意 这不
  • C# Entity Framework 4.1 Lambda Include - 仅选择特定包含的值

    我正在 EF4 1 上执行 lambda select 包括当前语句中的另一个相关 DBSet return dbEntity GameTypes Include a gt a Draws Where d gt d IsActive tru
  • 使用意图从 Unity 应用程序向 Android 应用程序发送数据

    我有两个独立的应用程序 AppA 使用 Android Studio 开发 和 AppB 使用 Unity 开发 AppA 将启动 AppB 这是一个游戏应用程序 用户玩完游戏 AppB 并点击退出按钮后 会将游戏记录 字符串数组 发送回A
  • C/C++ 计算小数位数?

    假设用户输入的是十进制数 例如 5 2155 有 4 位小数 它可以自由存储 int double 等 有没有clever 或非常简单 找出数字有多少位小数的方法 有点像如何通过屏蔽最后一位来发现数字是偶数还是奇数的问题 我知道的两种方法
  • 从构造函数调用的shared_from_this

    我必须在创建对象时在容器中注册该对象 如果没有智能指针 我会使用这样的东西 a class a class register somewhere this 对于智能指针我应该使用shared from this但我不能在构造函数中使用它 有
  • 带可选参数的 TCL 过程调用

    存在一个 TCL 脚本 该脚本具有多个名称相似的过程定义func在不同的命名空间中 程序如下 proc func a puts a 所有这类程序都只有一个参数a 所有此类过程都是从整个脚本中的一行调用的 func a 我需要创建另一个具有相
  • 没有子导航属性的 EF 一对多外键

    使用代码优先的实体框架和 NET 4 我尝试在父母与孩子之间创建一对多关系 public class Parent Key public int ParentId get set Required public string ParentN
  • 使子视图与父滚动视图的宽度匹配

    我有一个带有许多 EditText 子项的水平滚动视图 我希望这些子级中的每一个都与父级滚动视图的可见区域具有相同的宽度 这在 XML 中可能吗 您可以编写一个小辅助类来做到这一点 我们正在创建一个非常小的类来扩展EditText call