0

EditText幅と高さが固定されています。EditText長さ/テキストが多すぎる場合、テキストサイズを自動的に縮小できることを願っています。これを達成するために、私の質問は次のとおりです。

  1. 固定幅/高さとテキストサイズを指定して最大長を取得するにはどうすればよいですか?
  2. with/height とテキスト コンテンツを固定して、どのテキスト サイズを使用すればよいですか?
4

1 に答える 1

0

さて、私はそれについていくつかのアイデアを集めました、そして私はあなたにそれを提示しています. まだテストしていません。したがって、最初にここで行う必要があるのは、編集テキストの最大長を取得することです。ただし、getter を持つパラメータは限られているため、読み取れないと思います。

したがって、値フォルダーに長さ (たとえば 12) を書き込み、xml レイアウトと 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) Java で:

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 hereを適用する必要があります。

于 2013-06-13T10:12:06.523 に答える