进入第二行时如何减小文本大小?
Posted
技术标签:
【中文标题】进入第二行时如何减小文本大小?【英文标题】:How to reduce text size when it goes to second line? 【发布时间】:2014-08-07 07:32:42 【问题描述】:假设我有textview
的大小是18sp
,如果textview
进入第二行,如何减小textview
的大小?
有什么想法吗?
TextView text= (TextView)findViewById(R.id.text);
text.setTextSize(18);
//how to reduce text size if text goes to second line when it's too large?
提前致谢
【问题讨论】:
是TextView
size还是里面的textSize。因为sp
用于文本大小,dp
用于视图大小。
如果您想减小文本大小而不是添加文本观察器,并且在该 onTextChanged 方法中,您可以使用 textView.getLineCount() 检查行数是否大于 1,并且可以更改文本大小。
@KunalK 请你简单解释一下。
请仔细阅读我的答案,它会很有效..!!
@Shadow 请看答案。
【参考方案1】:
这是您问题的完整解决方案。 Check out this link
It will automatically reduce the font size if size of your text value is greater than your view.
Happy coding..!!
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 @n***d 是的,我知道很多时候某个链接过期了,但我不认为 Github 链接会死..!! 如果项目被删除,如果实施发生变化,如果 github 关闭......这里接受的最佳实践是在您的答案中至少包含高级别的详细信息,说明您的解决方案的作用 【参考方案2】:您可以按照以下代码 sn-p 将TextWatcher 绑定到您的 textView 并监听您的 textView 中的文本更改。
...
txtView = (TextView)findViewById(R.id.txt);
txtView.addTextChangedListener(new TextWatcher()
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
@Override
public void afterTextChanged(Editable s)
if(txtView.getLineCount() > 1)
txtView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
);
...
【讨论】:
【参考方案3】:使用spannable作为
String s= "Hello Everyone next line";
SpannableString ss1= new SpannableString(s);
ss1.setSpan(new RelativeSizeSpan(2f), 0,13, 0); // set size of Hello Everyone
ss1.setSpan(new RelativeSizeSpan(f), 14,23, 0);// set size of Next line
TextView tv= (TextView) findViewById(R.id.textview);
tv.setText(ss1);
【讨论】:
以上是关于进入第二行时如何减小文本大小?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 地理:减小 WKT 文本的大小(小数精度)