第一次在这里写博客,各位大侠勿喷啊,小弟在此感激不尽
从事java以来,一直在做javaEE的开发,android虽然以前曾经学过,不过大概忘的也差不多了,最近因为工作需要,准备把android也做起来,回回炉。
一时也不知道从何开始,只知道对于android自定义控件的了解还是挺薄弱的,就从此开始吧
1、先自定义一个view,先来个简单的吧,自定义一个TextView体验一下,这里只列出了重写的onDraw方法,其它方法未变
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); String text = "fishpan"; Paint paint = new Paint(); int color = paint.getColor();// 保存旧的画笔颜色 paint.setColor(Color.YELLOW); // 设置画笔颜色 canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint); // 画一个黄色背景 paint.setColor(color); // 恢复画笔颜色 canvas.drawText(text, 0, 0, paint); }
2、将自定义控件写在布局文件中<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:layout_width="match_parent" > <com.fishpan.view.TextView android:layout_width="200dp" android:layout_height="100dp" android:layout_centerInParent="true" /> </RelativeLayout>
3、看下预览效果
哎尼玛,这是啥情情况?
开始度娘的时候到了,结果在网上发现了这篇文章Canvas.drawText绘制文字为什么会偏上?
4、代码修改
5、再次运行效果@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); String text = "fikshpan"; Paint paint = new Paint(); int color = paint.getColor();// 保存旧的画笔颜色 paint.setColor(Color.YELLOW); // 设置画笔颜色 canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint); // 画一个黄色背景 paint.setColor(color); // 恢复画笔颜色 Rect rect = new Rect(); paint.getTextBounds(text, 0, text.length(), rect); canvas.drawText(text, 0 - rect.left, 0 - rect.top, paint); }
终于把字都显示出来了
6、文字正常显示出来了,怎么才能居中显示呢
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); String text = "fishpan"; Paint paint = new Paint(); // 画个漂亮的背景 int color = paint.getColor();// 保存旧的画笔颜色 paint.setColor(Color.YELLOW); // 设置画笔颜色 canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint); // 画一个黄色背景 paint.setColor(color); // 恢复画笔颜色 // 写文本 Rect rect = new Rect(); paint.getTextBounds(text, 0, text.length(), rect); //canvas.drawText(text, 0 - rect.left, 0 - rect.top, paint);// 完整显示文本内容 canvas.drawText(text, 0 - rect.left + (getWidth() - rect.width())/2, 0 - rect.top + (getHeight() - rect.height())/2, paint);//居中显示文本 }
7、看下运行效果
显示正常
Android自定义控件文本居中显示
最新推荐文章于 2024-09-04 10:57:07 发布