我想創建一個只接受數字的EditText,最多有4個數字,並且不會比填充4個數字時的縮小(不收縮時爲空,或者不得不擴展以容納4個數字,所以它是固定的。)在Android中,如何創建固定寬度的EditText?
前兩個是用android:inputType =「number」和android:maxLength =「4」完成的。
如何設置最小長度?
我想創建一個只接受數字的EditText,最多有4個數字,並且不會比填充4個數字時的縮小(不收縮時爲空,或者不得不擴展以容納4個數字,所以它是固定的。)在Android中,如何創建固定寬度的EditText?
前兩個是用android:inputType =「number」和android:maxLength =「4」完成的。
如何設置最小長度?
小的hackish,但你可以把你的EditText
內FrameLayout
一起與另一TextView
與text="0000"
和visibility=invisible.
FrameLayout
應該有width=wrap_content
和你EditText
將有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>
不知道內置解決方案,但您可以嘗試鈍化檢查長度並提交提交時出現錯誤消息的對話框。
問題是,EditText小部件可能由於許多不同的操作(如觸摸另一個敏感視圖,菜單按鈕或(硬鍵盤光標控制)等)而失去焦點。最大長度或輸入類型的恢復可以在搭售過程中完成(如果通過過濾器或未超過長度,請接受字符)。但每次都會丟失焦點 - 即使提交還沒有完成,輸入也很短 - >因此沒有內置的最小長度解決方案,因爲應用程序會在此時阻止另一個事件或任務的執行。 至少您必須在進入工作流程的下一步之前驗證輸入。
一個一個EditText,您可以使用的很少使用(據我所知)屬性是:
android:ems="4"
這使得EditText上正好是4個EMS寬。 em寬度是選定字體中最寬(M)字符的寬度。
這有效,但因爲我只允許數字輸入,所以4 em的寬度比需要的寬度要寬得多。我可以四處遊玩以獲得更好的寬度,但它仍然有點不準確。 – ab11 2010-11-23 16:45:10
爲我完美工作。我只需要一個固定長度的文本字段,其中可能有1到5個數字之間的任何位置,並且無論用戶輸入了多少個數字都看起來不錯。 – ArtOfWarfare 2012-09-06 21:12:53
使用Android:寬度=「XXX.Xdp」
這允許設置寬度密度像素,其應該是相對於屏幕的密度。我嘗試使用基於ems的字段2個字符,但由於ems需要int,所以2太小而3太大。布萊什。
我使用android:layout_width =「60dip」,所以同意mike fratto。
ems解決方案似乎也很有趣。
菲爾
您也可以嘗試使用。 。 。
android:ems="4"
android:maxEms="4"
android:layout_width="wrap_content"
。 。 。這應該確保可能由默認的Android的EditText風格
允許額外的控制上都留下填充最緊密配合和正確的,你可以使用
android:background="#ffffff"
android:paddingLeft="0dp"
android:paddingRight="0dp"
有一個非常簡單的方法以編程方式做到這一點。
myEditText.setLayoutParams(new LinearLayout.LayoutParams(200, 50));
這將設置寬度爲200和高度爲50!
享受:)
您可以設置其他對準明智的,當你把字符超過wditText寬度比它的上升幅度或寬度的EditText。 請將上面的視圖設置爲左邊的和右邊的來管理這些事情。只有一個解決方案
在我的情況下,我需要的觀點是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%不透明的白色,所以用戶永遠不會看到提示。
除了(排除)或接受(包括)? – 2014-05-16 18:05:10