Android TextView 动态尺寸截断文本的方式
创始人
2024-08-19 00:30:04
0

在Android中,可以使用TextPaint类中的getTextBounds方法来动态确定TextView的文本尺寸。以下是一个示例代码,演示如何使用这种方法来截断文本:

public class MainActivity extends AppCompatActivity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text_view);

        // 设置原始文本
        String originalText = "This is a long text that needs to be truncated dynamically.";
        textView.setText(originalText);

        // 获取TextView的宽度
        int textViewWidth = textView.getWidth();

        // 获取TextView的Paint对象
        TextPaint textPaint = textView.getPaint();

        // 设置最大的文本宽度
        int maxWidth = textViewWidth - textView.getPaddingLeft() - textView.getPaddingRight();

        // 获取文本的尺寸
        Rect bounds = new Rect();
        textPaint.getTextBounds(originalText, 0, originalText.length(), bounds);

        // 如果文本的宽度大于TextView的宽度,则进行截断操作
        if (bounds.width() > maxWidth) {
            // 获取截断文本的尺寸
            textPaint.getTextBounds("...", 0, 3, bounds);

            // 获取截断文本的宽度
            int ellipsisWidth = bounds.width();

            // 根据TextView的宽度计算需要截断的文本长度
            int textLength = textPaint.breakText(originalText, true, maxWidth - ellipsisWidth, null);

            // 截断文本并添加省略号
            String truncatedText = originalText.substring(0, textLength) + "...";
            textView.setText(truncatedText);
        }
    }
}

在这个例子中,我们首先获取了TextView的宽度,并计算了最大的文本宽度。然后,使用TextPaint类中的getTextBounds方法来获取原始文本以及省略号的尺寸。如果原始文本的宽度大于最大宽度,我们就使用breakText方法来计算需要截断的文本长度,并将省略号添加到截断的文本中。最后,将截断的文本设置到TextView中。

请注意,上述代码仅在onCreate方法中演示了一次性截断文本的过程。如果你希望在TextView的尺寸发生变化时动态截断文本,你需要将相应的代码放入适当的生命周期方法中,例如onGlobalLayout方法或自定义的尺寸变化回调方法中。

相关内容

热门资讯

免费测试版!杭州都莱到底有没有... 免费测试版!杭州都莱到底有没有挂(透视)福建天天开心辅助器(详细开挂外开挂教程);1、金币登录送、破...
技术分享!!雀友会潮汕麻将开挂... 技术分享!!雀友会潮汕麻将开挂(透视)盛世辅助软件(详细开挂外开挂教程);1、完成雀友会潮汕麻将开挂...
实测教程!朋友局辅助器免费版(... 实测教程!朋友局辅助器免费版(透视)开心泉州免费辅助器(详细开挂外开挂教程)1、朋友局辅助器免费版a...
分享一款!同乡游辅助器(透视)... 分享一款!同乡游辅助器(透视)心悦辅助(详细开挂外开挂教程)1)同乡游辅助器辅助挂:进一步探索同乡游...
传递经验!桂林字牌辅助科技帮手... 传递经验!桂林字牌辅助科技帮手(透视)微友三代辅助(详细开挂外开挂教程)1)桂林字牌辅助科技帮手辅助...
每日必看教程!一起宁德钓蟹作弊... 您好,传送屋激k看底牌辅助软件这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302...
新手必备!小逸碰胡辅助(透视)... 新手必备!小逸碰胡辅助(透视)河洛杠次插件(详细开挂外开挂教程)1、任何河洛杠次插件ai辅助神器的玩...
必知教程!!微信超级三加一辅助... 必知教程!!微信超级三加一辅助软件(透视)电脑版海盗来了辅助(详细开挂外开挂教程)1、微信超级三加一...
新手必备!找浙江宝宝游戏辅助插... 新手必备!找浙江宝宝游戏辅助插件(透视)新道游开挂(详细开挂外开挂教程)1、下载好找浙江宝宝游戏辅助...
重大推荐!决战卡五星辅助源码(... 重大推荐!决战卡五星辅助源码(透视)sohoo竞技联盟辅助(详细开挂外开挂教程);决战卡五星辅助源码...