自定义TextView控件
来源:互联网 发布:金螳螂网络采购平台 编辑:程序博客网 时间:2024/05/17 04:54
package com.lin.test;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.util.AttributeSet;import android.util.Log;import android.widget.TextView;/** * 新闻内容简介,一般用一行或两行显示,一行显示不下的用两行显示</br> * 后面再加上查看次数,查看次数永远固定在第二行靠右显示 * * @author linchunda * */public class MyTextView extends TextView {private Context context;private AttributeSet set;private String concise;//新闻内容简介private String count;//查看次数public MyTextView(Context context, AttributeSet set) {super(context, set);this.context = context;this.set = set;}public void setConcise(String concise) {this.concise = concise;}public void setCount(String count) {this.count = count + "人查看";}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Paint paint = getPaint();//自定义的TextView宽度int width = getWidth();FontMetrics fontMetrics = paint.getFontMetrics();//每行字符串数int length = width / (int) getTextSize();Log.i("MyTextView", "length===>" + length);//每行的高度int lineHeight = (int) (fontMetrics.descent - fontMetrics.ascent);if (concise.length() > length) {String start = concise.substring(0, length+1);canvas.drawText(start, 0, lineHeight, paint);//显示第一行Log.i("MyTextView", "start===>" + start);concise = concise.replace(start, "");//去掉第一行内容后的新闻简介if(concise.length()>length - count.length() - 5){//第二行内容长度超length - count.length() - 5,将进行截取,否则不用截取啦concise = concise.substring(0, length - count.length() - 5);}Log.i("MyTextView", "start2===>" + concise);canvas.drawText(concise, 0, lineHeight * 2+4, paint);//打印第二行内容canvas.drawText(count,(int) getTextSize() * (length - count.length()+2),lineHeight * 2+4, paint);//在第二行后面显示查看次数} else {canvas.drawText(concise, 0, lineHeight, paint);canvas.drawText(count,(int) getTextSize() * (length - count.length()+2), lineHeight * 2+4, paint);}}}
<com.lin.test.MyTextView android:id="@+id/textview_4" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/lightgray" android:lines="2" android:textColor="@color/black" android:paddingBottom="5dp"/>
textview_4 = (MyTextView) findViewById(R.id.textview_4);
textview_4.setConcise(ToSBC(content));
textview_4.setCount("20");
运行效果
- [自定义控件学习]Textview
- 自定义TextView控件
- 自定义旋转TextView控件
- 自定义控件textview
- 自定义倒计时TextView控件
- 自定义控件1---TextView
- 自定义控件3---TextView
- Android自定义TextView控件
- 自定义控件动画TextView
- 自定义组合控件textview
- 自定义一直走马灯TextView控件
- Android自定义控件之TextView
- Android自定义控件之TextView
- Android自定义控件之TextView
- android 自定义控件继承TextView
- 自定义组合控件:textView+checkBox
- Android 自定义控件起步:自定义TextView
- Android-自定义控件之重写控件(自定义TextView)
- 《代码整洁之道》第2章笔记——有意义的命名
- 组合模式
- 高斯背景建模程序
- c语言
- 【Cocos2d-x游戏引擎开发笔记(26)】中文和自定义字体
- 自定义TextView控件
- sram
- isap
- 高斯背景建模的学习
- hdu 2181 哈密顿绕行世界问题 (深搜)
- C# 生成全球唯一标识符GUID
- js调用cmd及java调用cmd
- win8风格layout
- 高斯背景建模之icvMatchTest函数篇