分享一个textView右上角的添加小红点的 tips
2016-11-28 12:01
501 查看
自定义TextView:
[java] view
plain copy
import com.ydk.mikecrm.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* textView上的小红点
* @author Visual
*
*/
public class RedTipTextView extends TextView {
public static final int RED_TIP_INVISIBLE = 0;
public static final int RED_TIP_VISIBLE = 1;
public static final int RED_TIP_GONE = 2;
private int tipVisibility = 0;
public RedTipTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init(null);
}
public RedTipTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init(attrs);
}
public RedTipTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init(attrs);
}
public void init(AttributeSet attrs) {
if(attrs != null) {
TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.RedTipTextView);
tipVisibility = array.getInt(R.styleable.RedTipTextView_redTipsVisibility, 0);
array.recycle();
}
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(tipVisibility == 1) {
int width = getWidth();
int paddingRight = getPaddingRight();
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setStyle(Style.FILL_AND_STROKE);
canvas.drawCircle(width - getPaddingRight() / 2, paddingRight / 2, paddingRight/2, paint);
}
}
public void setVisibility(int visibility) {
tipVisibility = visibility;
invalidate();
}
}
attrs.xml添加
[java] view
plain copy
<declare-styleable name="RedTipTextView">
<attr name="redTipsVisibility">
<enum name="invisible" value="0"></enum>
<enum name="visible" value="1"></enum>
<enum name="gone" value="2"></enum>
</attr>
</declare-styleable>
xml布局:
[java] view
plain copy
android:id="@+id/sliding_menu_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="5dip"
mike:redTipsVisibility="invisible"
android:layout_toRightOf="@id/sliding_menu_item_icon"
android:textColor="@color/text_light_gray_color"
android:textSize="@dimen/sliding_menu_item_text_size"
[java] view
plain copy
顶
2
踩
[java] view
plain copy
import com.ydk.mikecrm.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* textView上的小红点
* @author Visual
*
*/
public class RedTipTextView extends TextView {
public static final int RED_TIP_INVISIBLE = 0;
public static final int RED_TIP_VISIBLE = 1;
public static final int RED_TIP_GONE = 2;
private int tipVisibility = 0;
public RedTipTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init(null);
}
public RedTipTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init(attrs);
}
public RedTipTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init(attrs);
}
public void init(AttributeSet attrs) {
if(attrs != null) {
TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.RedTipTextView);
tipVisibility = array.getInt(R.styleable.RedTipTextView_redTipsVisibility, 0);
array.recycle();
}
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(tipVisibility == 1) {
int width = getWidth();
int paddingRight = getPaddingRight();
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setStyle(Style.FILL_AND_STROKE);
canvas.drawCircle(width - getPaddingRight() / 2, paddingRight / 2, paddingRight/2, paint);
}
}
public void setVisibility(int visibility) {
tipVisibility = visibility;
invalidate();
}
}
attrs.xml添加
[java] view
plain copy
<declare-styleable name="RedTipTextView">
<attr name="redTipsVisibility">
<enum name="invisible" value="0"></enum>
<enum name="visible" value="1"></enum>
<enum name="gone" value="2"></enum>
</attr>
</declare-styleable>
xml布局:
[java] view
plain copy
android:id="@+id/sliding_menu_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="5dip"
mike:redTipsVisibility="invisible"
android:layout_toRightOf="@id/sliding_menu_item_icon"
android:textColor="@color/text_light_gray_color"
android:textSize="@dimen/sliding_menu_item_text_size"
[java] view
plain copy
顶
2
踩
相关文章推荐
- 分享一个textView右上角的添加小红点的 tips
- 分享一个菜鸟级别的FMTextView 图文排版,支持两端对齐,自定义行高等
- 一个很好用的小控件----给所有view右上角添加数字(类似未读消息之类的)
- 一个textview里设置多种字体颜色,并添加图片
- SpannableString,多个textview合为一个,还可以为TextView添加图片
- 今天再分享一个TextView内容风格化的类
- AndroidTips(1):给TextView文字添加阴影效果
- Eclipse布局文件添加两个TextView,为什么运行后置显示一个
- android TextView 添加一个下划线
- 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!
- Android:TextView添加下划线以及利用intent跳转到一个网页
- 一个TextView实现不同部分添加不同样式
- Android:一个TextView分段改变样式、添加监听事件的实现方式(类似朋友圈评论)
- 如图实现一个textview在另一个textview的右上角
- 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!
- 自己写了一个带placeHolder的textView,分享给大家
- 动态的给TextView添加一个图片
- 为你的TextView添加一个边框的几种办法
- 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!
- 如何设置光标距离左边的位置,为我们的textfield添加一个Leftview