如何获得固定宽度/高度EditText和文本大小的最大文本长度

时间:2013-06-13 09:48:29

标签: android android-edittext

我有一个EditText,其宽度和高度都是固定的。我希望EditText可以在长度/文本太多时自动缩小文本大小。为了实现这一目标,我的问题是:

  1. 如何通过给定固定的宽度/高度和文本来获得最大长度 的大小?
  2. 使用/ height和text固定时,我应该使用什么文字大小 内容?

1 个答案:

答案 0 :(得分:0)

好的,我已经收集了一些关于它的想法,我将它呈现给你。我还没有测试过。所以我们首先需要做的是编辑文本max-length。但是,只有有限的参数才有吸气剂,所以我认为你不能读它。

因此在values文件夹中写入长度(Say 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"
    />
Java中的

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