android 设置TextView多行和单行各自显示不同的Gravity样式;textview.getLineCount()值为0解决

在TextView中显示多行或者单行文本的时候,有时单行需要居中显示,而多行的时候需要段落显示在textview中,可以通过textview.getLineCount();获取到行数,可是在视图完全未绘制完时此值都为0,解决如下:



textview.setText("我是中国人***我是中国人。");//如果需要设置段落首空两个格时就需要先在下面代码之前先给textview设置一次内容;如果不需要,则此处设置一次内容就可以了,下面判断行数后只需再设置Gravity就可以了;

ViewTreeObserver treeObserver = textview.getViewTressObserver();
treeObserver .addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
    @Override
    public void onGlobalLayout(){
    ViewTreeObserver observer = textview.getViewTreeObserver();
    observer.removeGlbalOnLayoutListener(this);//这里防止重复调用;需移除;
    //这里获取textview的内容所占行数;
    int line = textview.getLineCount();
    if(line == 1){
    //设置居中,可以在这里设置段落,
    textview.setGravity(Gravity.CENTRY);
    textview.setText("我是中国人");//单行,居中显示;
    }else{
    //可以在这里设置段落,重新在设置一下textview中的内容;
    textview.setGravity(Gravity.START);
    textview.setText("\t\t"+"我是中国人***我是中国人。");//多行,并会在段首空出两个空来;
}
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值