代码之家  ›  专栏  ›  技术社区  ›  ab11

在Android中,如何创建固定宽度的EditText?

  •  39
  • ab11  · 技术社区  · 14 年前

    我想创建一个只接受数字的编辑文本,最多有4个数字,如果没有4个数字(在空时不收缩,或者必须扩展以容纳4个数字,所以它是固定的),那么它永远不会比它窄。

    前2个是用:android:inputType=“number”和android:maxLength=“4”完成的。

    如何设置最小长度?

    10 回复  |  直到 7 年前
        1
  •  38
  •   ifeomaro    8 年前

    一点 粗俗的 ,但你可以 EditText 在一个 FrameLayout 和另一个一起 TextView 具有 text="0000" visibility=invisible.

    框架布局 应该有 width=wrap_content 还有你的 编辑文本 会有 width=match_parent .
    这应该使它始终保持正确的宽度。

    这样做的好处是,它是100%xml的,不涉及代码。

    <FrameLayout
     android:layout_width="wrap_content"
     android:layout_height="wrap_content">
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="0000"
        android:visibility="invisible" />
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:maxLength="4" />
    </FrameLayout>
    
        2
  •  96
  •   Kevin Coppock    14 年前

    可以使用的EditText的一个很少使用的(AFAIK)属性是:

    android:ems="4"

    这使得EditText的宽度正好为4ems。em width是选定字体中最宽字符(M)的宽度。

        3
  •  20
  •   MW.    10 年前

    在我的情况下,我需要6位数宽的视野。android:ems使字段太宽(因为M字符比数字宽)。

    最后我使用了一个透明的提示,它指示字段的最小宽度。下面的例子是六位数宽。

    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="000000"
            android:textColorHint="#00FFFFFF"
            android:maxLength="6"
            android:inputType="numberPassword" />
    

    此解决方案独立于字体、字母间距和其他可能变化的内容。textColorHint是一种0%不透明的白色,因此用户永远看不到该提示。

        4
  •  8
  •   Chris Sullivan    12 年前

    你也可以尝试使用。. .

    android:ems="4"
    android:maxEms="4"
    android:layout_width="wrap_content"
    

    . . . 这将确保默认android edittext样式可能允许的最紧密的配合

    对于左右两边都有填充的附加控件,可以使用

    android:background="#ffffff"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    
        5
  •  2
  •   mike fratto    14 年前

    使用android:width=“XXX.Xdp”

    这允许您以密度像素为单位设置宽度,该宽度应与屏幕密度相对应。我尝试使用基于ems的字段2字符宽,但由于ems需要int,2太小,3太大。布莱奇。

        6
  •  1
  •   wea    12 年前

    有一种非常简单的方法可以通过编程实现。

    myEditText.setLayoutParams(new LinearLayout.LayoutParams(200, 50));
    

    这将设置宽度为200,高度为50!!

    享受:)

        7
  •  0
  •   Vladimir Ivanov    14 年前

    不知道内置的解决方案,但您可以尝试被动地检查长度,并在提交时弹出一个带有错误消息的对话框。

        8
  •  0
  •   Impression    14 年前

    问题是,EditText小部件可能会因为触摸另一个敏感视图、菜单按钮或(硬键盘光标控制)等许多不同的操作而失去焦点。输入的最大长度或类型的恢复可以在捆绑过程中完成(如果字符通过过滤器或长度未超过,则接受字符)。但是,每次都会出现焦点丢失的情况—即使提交尚未完成,并且输入到short->中,也没有内置的最小长度解决方案,因为此时应用程序将阻止另一个事件或任务的执行。 至少在进入工作流的下一步之前必须验证输入。

        9
  •  0
  •   Phil    14 年前

    我使用android:layout_width=“60dip”所以同意mike fratto。

    ems解决方案似乎也很有趣。

    菲尔

        10
  •  0
  •   Ramkailash    10 年前

    如果字符的宽度大于wditText的“增加宽度”或“编辑文本宽度”,则可以按其他方式设置对齐方式。 请设置上述视图的“toLeftOf”和“Toright”来管理这些内容。只有一个解决方案

    推荐文章