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方法或自定义的尺寸变化回调方法中。

相关内容

热门资讯

透明科技!腾讯欢乐卡五星辅助器... 腾讯欢乐卡五星辅助器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加...
透视真的!蛮王辅助器,wepo... >>您好:蛮王辅助器确实是有挂的,很多玩家在这款蛮王辅助器游戏中打牌都会发现很多用户的牌特别好,总是...
透视游戏!科米台州麻将辅助,w... 透视游戏!科米台州麻将辅助,wpk俱乐部是做什么的-一向有挂开挂辅助脚本;无需打开直接搜索薇:136...
透视app!新海贝辅助器,we... 透视app!新海贝辅助器,we poker辅助器下载-往昔有挂开挂辅助挂;无需打开直接搜索微信(13...
透明有挂!小程序牵手跑得辅助,... 透明有挂!小程序牵手跑得辅助,wepoker正确养号方法-原先有挂开挂辅助软件1、下载安装好小程序牵...
透明新版!传送屋透视,wepo... 传送屋透视开挂教程视频分享装挂详细步骤在当今的网络游戏中,传送屋透视作为一种经典的娱乐方式,吸引了无...
透视智能ai!友玩广西修改器,... 透视智能ai!友玩广西修改器,哈糖大菠萝怎么开挂-固有有挂开挂辅助挂;无需打开直接搜索加薇13670...
透视线上!山西打锅子技巧,aa... 透视线上!山西打锅子技巧,aa poker辅助-原先有挂开挂辅助挂 了解更多开挂安装加(136704...
透明软件!逍遥辅助器怎么用,a... 透明软件!逍遥辅助器怎么用,aapoker透视脚本-本然有挂开挂辅助工具这是一款可以让一直输的玩家,...
透明规律!老友广东辅助工具下载... 【亲,老友广东辅助工具下载地址 这款游戏可以开挂的,确实是有挂的,很多玩家在这款老友广东辅助工具下载...