如何给控件画边界?

gzroy 2010-07-05 11:19:38
我想设计一个带边框的TextView,因此自定义了一个类FrameTextView,继承TextView,然后重新编写了onDraw函数,但是奇怪的是,我画出来的边界只有左边和上边的线,右边和下边的线都看不到,请高手们指点一下,多谢多谢!

public class FrameTextView extends TextView {

private Paint mPaint = null;
private Rect r = null;

public FrameTextView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
r = new Rect();
}

public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
this.getLocalVisibleRect(r);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(1);
canvas.drawRect(r, mPaint);
}
...全文
442 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hinagi 2010-07-06
  • 打赏
  • 举报
回复
楼主的代码其实是可以画出来的,拿来试了一下,加下面两句就可以了,但是具体原因是什么还没找到.
=.=

public void onDraw(Canvas canvas) {
super.onDraw(canvas);
this.getLocalVisibleRect(r);
r.bottom --;
r.right--;
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(1);
canvas.drawRect(r, mPaint);
}
liujinrui 2010-07-06
  • 打赏
  • 举报
回复
背景圖吧,google本身的應用也是這麼做的,沒必要自己畫吧
liqi4960710 2010-07-06
  • 打赏
  • 举报
回复
我没有那么做过!
我一般是用一个有边框的图片来做TextView的背景图片!
aSysBang 2010-07-06
  • 打赏
  • 举报
回复
用个背景图片
Hinagi 2010-07-06
  • 打赏
  • 举报
回复
画一个假的边框好了,不过如果你每个TextView都这样画的话看起来就很啰嗦了,还是你自己继承TextView的方法比较好.
给一个假边框的demo供你参考.

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFF0000">

<TextView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="3dip"
android:background="#FFFFFFFF"
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:text="哈哈哈哈哈哈">
</TextView>
</LinearLayout>
vclongking 2010-07-06
  • 打赏
  • 举报
回复
背景图效果是最好的。
gzroy 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kenshintang1215 的回复:]

楼主的代码其实是可以画出来的,拿来试了一下,加下面两句就可以了,但是具体原因是什么还没找到.
=.=
Java code

public void onDraw(Canvas canvas) {
super.onDraw(canvas);
this.getLocalVisibleRect(r);
r.bottom --;
……
[/Quote]

嗯,这个方法我也尝试过,是可以画出边界,不过如果这样做的话,当两个控件并排的时候,就会显得中间分隔的边界很粗了。
gzroy 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kenshintang1215 的回复:]

画一个假的边框好了,不过如果你每个TextView都这样画的话看起来就很啰嗦了,还是你自己继承TextView的方法比较好.
给一个假边框的demo供你参考.
XML code

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
and……
[/Quote]

谢谢!这也是一个解决的办法,不过我还是觉得奇怪为何有一半的边界画不出来

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧