自定義帶邊框TextView 邊框粗細不一的問題

2021-09-05 01:14:18 字數 2520 閱讀 6434

給textview加邊框

最low的做法、textview外層套一層布局,然後給布局加邊框樣式(這麼弱的做法,不能這麼幹)

自定義控制項

用canvas畫四個點

package com.example.csy.activitypractice;

import android.content.context;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.support.annotation.nullable;

import android.util.attributeset;

/*** @author csy

* created by csy on 2018/12/3.

*/private int stroke_width = 5;

public bordertextview(context context)

public bordertextview(context context, @nullable attributeset attrs)

public bordertextview(context context, @nullable attributeset attrs, int defstyleattr)

@override

protected void ondraw(canvas canvas) ;

canvas.drawlines(points, paint);}}

canva直接提供了畫矩形的方法

drawrect(float left, float top, float right, float bottom, paint paint) 畫矩形

rectf rectf = new rectf(0, 0, this.getwidth(), this.getheight());

canvas.drawrect(rectf, paint);

之前用rect畫了帶矩形邊框。現在公升級一下畫圓角邊框

rectf rectf = new rectf(0, 0, this.getwidth(), this.getheight());

canvas.drawroundrect(rectf, 20, 20, paint);

如下圖

用drawroundrect出現了粗細不一的邊框,懷疑是因為用的裁剪。

所以嘗試使用畫路徑的方法

path path = new path();

rectf rectf = new rectf(0, 0, this.getwidth(), this.getheight());

path.addroundrect(rectf, 20, 20, path.direction.ccw);

canvas.drawpath(path, paint);

但是效果與drawroundrect一致

懷疑是因為邊框被裁減了,所以畫了兩條線,一條從(0,0)開始,另一條從(100,0)開始

畫筆的起始在邊框的中間,如若從(0,0)開始畫,邊框的一半就會被畫在畫布的外面。

邊框向外推邊框的二分之一,向內推邊框的二分之一

設定padding,減去邊框的粗細。

自定義控制項textview

自定義控制項名稱 public class cheyouquanlinearlayout extends viewgroup public cheyouquanlinearlayout context context,int horizontalspacing,int verticalspacing...

自定義閃爍Textview

一直感覺自定義view是乙個比較難的點,但是要成為乙個合格的android開發者,自定義view又是必經之路。今天我就帶大家寫乙個簡單的自定義textview。在自定義view之前先看一下簡單知識點。1.view的測量。view的測量模式有三種,精確模式 exactly 如控制項具體寬高的大小 最大...

Android 自定義TextView字型!

兩種方法 方法一 在assets目錄下新建目錄fonts,然後存放自己的字型庫,我這裡是微軟雅黑weiruanyahei.ttf。textview tv typeface tf2 typeface.createfromasset getassets fonts weiruanyahei.ttf tv...