如何在Android中动态更改文本大小
Posted
技术标签:
【中文标题】如何在Android中动态更改文本大小【英文标题】:How to dynamically change the text size in Android 【发布时间】:2016-01-30 14:44:59 【问题描述】:我想实现一个功能,
EditText用户在输入文字时,可以按照设置的字体大小进行修改,
如 Google Docs of Office,
现在我找到了SpannableString
的方法,但阅读一些示例似乎无法满足我的需求
int index = input.getSelectionEnd();
SpannableString spann = new SpannableString(show_input);
AbsoluteSizeSpan word_size = new AbsoluteSizeSpan(18,true);
spann.setSpan(word_size, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
input.getText().insert(index, spann);
那么有没有办法提供呢?
【问题讨论】:
您的问题无法理解,请提供您想要的和您拥有的。还要添加一些代码 它很复杂。但是 SpannableString 会为你工作。你只需要做一些头脑风暴。 spann.setSpan(word_size, startStringPosition, endStringPosition, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 【参考方案1】:看起来你想改变所选文本的大小:
int start = editText.getSelectionStart();
int end = editText.getSelectionEnd();
Spannable text=(Spannable)editText.getText();
text.setSpan(new AbsoluteSizeSpan(NEW_TEXT_SIZE, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(text);
使用AbsoluteSizeSpan 更改实际大小或使用RelativeSizeSpan 更改比例大小。
【讨论】:
【参考方案2】:我想添加 TextWatcher(),
input =(EditText)findViewById(R.id.Input_EditText);
input.addTextChangedListener(new TextWatcher()
public void onTextChanged(CharSequence s, int start, int before, int count)
public void beforeTextChanged(CharSequence s, int start, int count, int after)
public void afterTextChanged(Editable s)
int index = input.getSelectionEnd();
String nowstr;
if(index==0)
//do nothing
else
nowstr = s.toString();
char nowstr_array[] = nowstr.toCharArray();
show_input = String.valueOf(nowstr_array[index-1]);
SpannableStringBuilder spann = new SpannableStringBuilder(show_input);
AbsoluteSizeSpan word_size = new AbsoluteSizeSpan(40,true);
spann.setSpan(word_size, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
input.getText().insert(index, spann);
);
但是这个程序会崩溃...
那么,我试着去做
Toast.makeText(MainActivity.this, spann, Toast.LENGTH_SHORT).show();
//input.getText().insert(index, spann);
但是这样做可以显示...
这就是为什么?
【讨论】:
哪一行崩溃了?添加崩溃日志。以上是关于如何在Android中动态更改文本大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 中动态更改 UITextView 中文本的字体大小