首先效果图

 

收起

Android TextView限定行数最大值,点击按钮显示所有内容_第1张图片

 

展开

Android TextView限定行数最大值,点击按钮显示所有内容_第2张图片

 

 

 

代码

 

xml布局

<?xml version="1.0" encoding="utf-8"?>                            

 

 

java 代码

package com.wjn.viewlistdemo.activity.textview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import com.wjn.viewlistdemo.R;import com.wjn.viewlistdemo.utils.StatusBarUtil;public class TextViewMaxActivity extends AppCompatActivity {    private TextView textView;    private ImageView imageView;    private boolean isimageview=false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_textviewmax);        //根据状态栏颜色来决定 状态栏背景 用黑色还是白色 true:是否修改状态栏字体颜色        StatusBarUtil.setStatusBarMode(this, false, false, R.color.colorPrimary);        initView();    }    /**     * 初始化各种View     * */    private void initView(){        textView=findViewById(R.id.activity_textviewmax_textview);        imageView=findViewById(R.id.activity_textviewmax_imageview);        textView.setText(StringUtils.string1);//        textView.setText(StringUtils.string2);        textView.post(new Runnable() {            @Override            public void run() {                boolean b=isTextView(textView);                if(b){                    imageView.setVisibility(View.VISIBLE);                }else{                    imageView.setVisibility(View.GONE);                }            }        });        imageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if(!isimageview){                    imageView.setBackgroundResource(R.mipmap.downs);                    textView.setMaxLines(10000);                    isimageview=true;                }else{                    imageView.setBackgroundResource(R.mipmap.up);                    textView.setMaxLines(3);                    isimageview=false;                }            }        });    }    private boolean isTextView(TextView textView){        float m=textView.getPaint().measureText(textView.getText().toString());        float n=3*(textView.getWidth()-textView.getPaddingRight()-textView.getPaddingLeft());        return m>n;    }}

 

 

 

由于TextView渲染是需要时间的,如果在获取到TextView并setText之后立马进行判断,会发现此时TextView还没有绘制出来,拿到的属性均为初始值,比如前面函数中调用的getWidth返回为0,这样显然是不对的。所以要在TextView.post方法中执行。

 

 

 

 

代码链接:https://github.com/wujianning/ViewListDemo

更多相关文章

  1. android 相对布局例子代码
  2. Android:获取网页源代码
  3. Android软键盘之代码改变软键盘状态
  4. android 用代码设置margin属性,textView加粗
  5. Android调用百度地图API实现――实时定位代码
  6. android获取当前Canvas位图代码
  7. Android 代码获取手机ip地址(个人笔记)
  8. Android Studio 添加百分比布局库的依赖报错 第一行代码

随机推荐

  1. sqlserver中获取date类的年月日语句
  2. sqlserver 不能将值NULL插入列id(列不允
  3. sql实现修改表字段名的方法详解
  4. sqlserver实现更改字段名
  5. 浅谈SQLServer的ISNULL函数与Mysql的IFNU
  6. 深入SQLServer中ISNULL与NULLIF的使用详
  7. 探讨:如何查看和获取SQL Server实例名
  8. 使用SQL Server判断文件是否存在后再删除
  9. 解析如何在sqlserver代理中配置邮件会话
  10. 深入sql server 2005 万能分页存储过程的