Ela*_*nda 5 user-interface android width textview android-viewtreeobserver
我有这个代码:
final ViewTreeObserver[] viewTreeObserver = {myAcco
viewTreeObserver[0].addOnPreDrawListener(
new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int chipWidth =
myAccountView.getMeasuredWidth()
- myAccountView.getPaddingLeft()
- myAccountView.getPaddingRight();
if (chipWidth > 0) {
myAccountView.setText(
setChipTextWithCorrectLength(
getContext().getString(R.string.og_my_account_desc_long_length),
getContext().getString(R.string.og_my_account_desc_meduim_length),
getContext().getString(R.string.og_my_account_desc_short_length),
chipWidth));
viewTreeObserver[0] = myAccountView.getViewTreeObserver();
if (viewTreeObserver[0].isAlive()) {
viewTreeObserver[0].removeOnPreDrawListener(this);
}
}
return true;
}
});
}
@VisibleForTesting
String setChipTextWithCorrectLength(
String longDesc, String mediumDesc, String shortDesc, int clipWidth) {
if (!isTextEllipsized(longDesc, clipWidth)) {
return longDesc;
}
if (!isTextEllipsized(mediumDesc, clipWidth)) {
return mediumDesc;
}
return shortDesc;
}
private boolean isTextEllipsized(String text, int clipWidth) {
TextPaint textPaint = myAccountView.getPaint();
Toast.makeText(this.getContext(), "textPaint.measureText(text) = "+textPaint.measureText(text)+" clipWidth ="+ clipWidth,
Toast.LENGTH_LONG).show();
return textPaint.measureText(text) > clipWidth;
}
Run Code Online (Sandbox Code Playgroud)
当需要ellipsize时,代码应动态更改textView中的文本.
然而,当我运行该应用程序我看到有时视图(剪辑)的宽度==长文本宽度和仍有ellipsize在UI中.
我看到当textView被not visible和toggeled 发生时会发生这种情况visible.
我应该以不同的方式计算vlip(视图)宽度吗?
之前测量textView的任何特殊方法都变成了visible?
你应该检查
getEllipsisCount()
Run Code Online (Sandbox Code Playgroud)
看看问题的根源。
定义:返回要省略的字符数,如果不进行省略则返回 0。
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |