2013-06-13 47 views
0

我有一個固定寬度和高度的EditText。如果長度/文本太多,我希望EditText可以自動縮小文字大小。爲了實現這一點,我的問題是:如何獲取固定寬度/高度的最大文本長度EditText和文本大小

  1. 我怎麼能給予固定的寬度/高度和文字 大小獲得最大的長度?
  2. 通過固定/高度和文字 的內容應使用什麼文字大小?
+1

那麼你是說你編程式地想讓編輯文本更加成熟一些,並且當參數太多時會自動縮小文本大小? –

+0

爲什麼不設置最大長度?設置最大長度非常簡單:'android:maxLength =「10」' –

+0

@TheDarkKnight,maxLength不靈活。 – kzjfr0

回答

0

好吧,我收集了一些關於它的想法,並且我將它呈現給你。我還沒有測試過它。所以首先我們需要做的是獲得編輯文本的最大長度。但是,只有有限的參數有他們的getter,所以我認爲你不能讀它。

所以寫值文件夾中的長度(說12),並在xml佈局和你的java類中使用它。現在它不是硬編碼的。在Java中

1)創建integer.xml中值

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item type="integer" name="max_length">12</item> 
</resources> 

2)在佈局

<TextView android:id="@+id/tv" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:maxLength="@integer/max_length" 
    /> 

3):

int maxLength = getResources().getInteger(R.integer.max_length); 

現在我們要調整文本的字體大小,所以我們需要獲得第一:

msgInput = (EditText) findViewById(R.id.msgInput); 
    msgInput.addTextChangedListener(new TextWatcher() 
    { 

    public void afterTextChanged(Editable s) { 
    if ((msgInput.getMaxHeight() > maxLength) || (msgInput.getTextSize() > maxLength)) 
    { 
    msgInput.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); 
    } 
    else 
    { 
    int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics()); 
    msgInput.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, height)); 
    } 
    } 

    public void beforeTextChanged(CharSequence s, int start, int count, 
    int after) {   
    } 

    public void onTextChanged(CharSequence s, int start, int before, 
    int count) {   
    } 

    }); 

總而言之,你要在這裏申請TextView

相關問題