我有一个EditText
固定的宽度和高度。我希望EditText
当长度/文本太多时可以自动减小文本大小。为了实现这一点,我的问题是:
- 如何通过提供固定宽度/高度和文本大小来获得最大长度?
- 通过给出固定的/高度和文本内容,我应该使用什么文本大小?
我有一个EditText
固定的宽度和高度。我希望EditText
当长度/文本太多时可以自动减小文本大小。为了实现这一点,我的问题是:
好的,我已经收集了一些关于它的想法,我正在向你展示它。我还没有测试它。所以首先我们需要在这里做的是获取编辑文本最大长度。但是,只有有限的参数有它们的 getter,所以我认为你看不到它。
因此,在 values 文件夹中写入长度(比如 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。