1. 程式人生 > >EditText單行、多行和自動換行顯示內容以及只輸入數字和小數點

EditText單行、多行和自動換行顯示內容以及只輸入數字和小數點

先說說TextView的單行、多行的應用場景:

1) TextView預設是多行顯示的,並且能夠自動換行。不過自動換行時對中文處理的不是很好,很容易在控制元件邊框附近出現空白間隙。要想處理這種情況只能夠去自定義TextView了,具體可檢視Android自定義view-文字自動換行。不過這種方式並不是很好,建議使用自帶的StaticLayout類來對內容進行顯示處理。

2) TextView被用來顯示標題等類似內容時需要單行顯示。只要設定android:singleLine=”true” 即可。此時也可以設定跑馬燈效果,具體檢視[Android教程]TextView屬性android:ellipsize實現跑馬燈效果

現在來說說EditText,它預設也是多行顯示和自動換行的,單行設定跟TextView是相同的。由於裝置螢幕大小限制,大部分情況EditText都需要單行顯示。

相關程式碼:


       android:id="@+id/etTest" android:singleLine="true"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

預設的edittext是不會自動換行的,那麼我們只好去程式碼中尋求解決之道

EditText editText = new EditText(this);  

//設定EditText的顯示方式為多行文字輸入  

editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);  

//文字顯示的位置在EditText的最上方  

editText.setGravity(Gravity.TOP);  

editText.setText("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");  

//改變預設的單行模式  

editText.setSingleLine(false);  

//水平滾動設定為False  

editText.setHorizontallyScrolling(false);  

EditText可以設定多種輸入方式,其中若要設定輸入數字和小數點時應注意一下幾點:

1.如果設定只輸入數字

edittext.setInputType( InputType.TYPE_CLASS_NUMBER);

此時只會彈出數字輸入框,符號點選後不會輸入到文字框中

2.只能輸入數字和小數點

edittext.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

此時注意:只設置InputType.TYPE_NUMBER_FLAG_DECIMAL是無法實現只能輸入數字和小數點的,必須InputType.TYPE_CLASS_NUMBER 和 

InputType.TYPE_NUMBER_FLAG_DECIMAL同時設定才可以