假设textView内的内容多于4行时,出现省略点,出现展开箭头
初始化textView
brandContent = (TextView) findViewById(R.id.brand_content);
brandContent.setText("xxxxx");//添加数据
接下获取TextView中的行数
如果直接 lines = brandContent.getLineCount();
会发现返回的结果为0,因为textView还没有渲染完成就调用了这个方法。
//获取textView的行数,如果超过四行就显示下拉标志 //该方法是对textView进行变化监听,从而获取到view的行数 brandContent.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { //这个回调会调用多次,获取完行数记得注销监听 brandContent.getViewTreeObserver().removeOnPreDrawListener(this); lines = brandContent.getLineCount(); //进行判断是否已经省略了 if(brandContent.getLayout().getEllipsisCount(lines-1)>0){ lookAllImg.setVisibility(View.VISIBLE); }else { lookAllImg.setVisibility(View.GONE); } return false; } });
以上的方法是判断了行数是否达到出现箭头的要求,下面是这个箭头的的点击事件
//是否展开显示 lookAllImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(flag){ flag = false; brandContent.setEllipsize(null); brandContent.setSingleLine(flag); lookAllImg.setBackgroundDrawable(getResources().getDrawable(R.drawable.shou )); }else { flag = true; brandContent.setEllipsize(TextUtils.TruncateAt.END); // 收缩 brandContent.setMaxLines(4); lookAllImg.setBackgroundDrawable(getResources().getDrawable(R.drawable.la )); } } });
OK,完成啦,可能还存问题,继续锻炼,加油!