700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android自定义控件之TextView

Android自定义控件之TextView

时间:2022-04-11 06:20:41

相关推荐

Android自定义控件之TextView

转自:/?p=284

有时候Android自带的控件无法满足我们的某些要求,这时就需要我们自定义控件来实现这些功能。比如需要一个TextView里的字倾斜一定的角度,就需要自定义TextView。

右下角的记分牌就是这样的TextView。

下面介绍怎么自定义TextView。

首先新建一个继承自TextView的类,取名为RotateTextView:

1 import android.content.Context; 2 import android.graphics.Canvas; 3 import android.util.AttributeSet; 4 import android.widget.TextView; 5 6 public class RotateTextView extends TextView { 7 private static final String NAMESPACE = “/apk/res/easymobi”; 8 private static final String ATTR_ROTATE = “rotate”; 9 private static final int DEFAULTVALUE_DEGREES = 0;10 private int degrees ;11 public RotateTextView(Context context, AttributeSet attrs) {12 super(context, attrs);13 degrees = attrs.getAttributeIntValue(NAMESPACE, ATTR_ROTATE, DEFAULTVALUE_DEGREES);14 15 }16 @Override17 protected void onDraw(Canvas canvas) {18 19 canvas.rotate(degrees,getMeasuredWidth()/2,getMeasuredHeight()/2);20 super.onDraw(canvas);21 }22 23 }

一定要有带Context和AttributeSet参数的构造函数,getAttributeIntValue()里第一个参数是命名空间,类似于Android自带的”/apk/res/android”,这里可以自己随便定义。第二个参数是传入的参数的值,这里是旋转地角度。第三个参数是默认值,就是不定义该属性时默认旋转的角度,这里是0度。然后重写onDraw()方法,rotate()作用是以TextView的中心为中点把画布旋转degrees度,这样就实现了字的旋转。

下一步就是在布局文件中使用自定义的TextView:

<cn.easymobi.application.memorytest.RotateTextViewandroid:layout_width=”wrap_content”android:layout_height=”wrap_content”android:padding=”8dip”android:gravity=”center”android:id=”@+id/tvBottom_color”android:textSize=”15dip”android:textColor=”@color/black”easymobi:rotate=”10″android:layout_marginTop=”468dip”/>

其他属性与普通的TextView相同,easymobi:rotate=”10″指定了旋转10度,但是要注意在头文件加上xmlns:easymobi=”/apk/res/easymobi”,这个就是RotateTextView中的命名空间的作用。还有一点要注意的就是加上合适的padding,因为这种方法旋转的是TextView里面的字,而不是TextView本身,如果不加padding,有些字就会因为旋转而跑到了TextView外面而不能显示。

用类似的方法还可以实现各种各样你想要的效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。