项目地址:lygttpod/SuperTextView
简介:一个功能强大的 TextView,可以满足日常大部分布局方式,开发者可已自行组合属性配置出属于自己风格的样式!
更多:作者 提 Bug
标签:
TextView-
SuperTextView是一个功能强大的 View,可以满足日常大部分布局样式,开发者可已自行组合属性配置出属于自己风格的样式!可能描述起来没有概念,还是直接看效果图吧!
SuperButton拥有 shape 文件的大部分属性,从此写 shape 属性变得非常简单
CommonTextView只是 SuperTextView 的逻辑简化,其实功能并不差少哦,有兴趣的可以看看
如果觉得对你有用的话,点一下右上的星星赞一下吧!
先在项目根目录的 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在 dependencies 添加:
dependencies {
...
compile 'com.github.lygttpod:SuperTextView:2.1.6'
}
重写 SuperTextView,功能更加全面,部分方法及属性有变更,1.x 版本的老用户请注意
3.2.1、布局中如何使用(示例中只列出部分属性,开发者可根据具体需求使用其他属性)
注意:
1、上下的线可以通过 sDividerLineType 设置 有四种显示方式 none,top,bottom,both
2、通过设置 sUseRipple=true 开启水波效果
3.2.2、代码中如何使用
/**
* 可以通过链式设置大部分常用的属性值
*/
superTextView.setLeftTopString("")
.setLeftString("")
.setLeftBottomString("")
.setCenterTopString("")
.setCenterString("")
.setCenterBottomString("")
.setRightTopString("")
.setRightString("")
.setRightBottomString("")
.setLeftIcon(0)
.setRightIcon(0)
.setCbChecked(true)
.setCbBackground(null)
.setLeftTvDrawableLeft(null)
.setLeftTvDrawableRight(null)
.setCenterTvDrawableLeft(null)
.setCenterTvDrawableRight(null)
.setRightTvDrawableLeft(null)
.setRightTvDrawableRight(null);
superTextView.setShapeCornersRadius(20)
.setShapeCornersTopLeftRadius(20)
.setShapeCornersBottomLeftRadius(20)
.setShapeCornersTopRightRadius(20)
.setShapeCornersBottomRightRadius(20)
.setShapeStrokeColor(getResources().getColor(R.color.colorPrimary))
.setShapeStrokeWidth(1)
.setShapeSrokeDashWidth(1)
.setShapeStrokeDashGap(5)
.setShapeSolidColor(getResources().getColor(R.color.white))
.setShapeSelectorNormalColor(getResources().getColor(R.color.red_btn))
.setShapeSelectorPressedColor(getResources().getColor(R.color.gray))
.useShape();//设置完各个参数之后这句调用才生效
3.2.3 点击事件(可根据需求选择实现单个或者多个点击事件)
/**
* 根据实际需求对需要的 View 设置点击事件
*/
/**
* 根据实际需求对需要的 View 设置点击事件
*/
superTextView.setOnSuperTextViewClickListener(new SuperTextView.OnSuperTextViewClickListener() {
@Override
public void onClickListener(SuperTextView superTextView) {
string = "整个 item 的点击事件";
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setLeftTopTvClickListener(new SuperTextView.OnLeftTopTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getLeftTopString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setLeftTvClickListener(new SuperTextView.OnLeftTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getLeftString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setLeftBottomTvClickListener(new SuperTextView.OnLeftBottomTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getLeftBottomString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setCenterTopTvClickListener(new SuperTextView.OnCenterTopTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getCenterTopString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setCenterTvClickListener(new SuperTextView.OnCenterTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getCenterString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setCenterBottomTvClickListener(new SuperTextView.OnCenterBottomTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getCenterBottomString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setRightTopTvClickListener(new SuperTextView.OnRightTopTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getRightTopString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setRightTvClickListener(new SuperTextView.OnRightTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getRightString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setRightBottomTvClickListener(new SuperTextView.OnRightBottomTvClickListener() {
@Override
public void onClickListener() {
string = superTextView.getRightBottomString();
Toast.makeText(ClickActivity.this, string, Toast.LENGTH_SHORT).show();
}
}).setLeftImageViewClickListener(new SuperTextView.OnLeftImageViewClickListener() {
@Override
public void onClickListener(ImageView imageView) {
Toast.makeText(ClickActivity.this, "左边图片", Toast.LENGTH_SHORT).show();
}
}).setRightImageViewClickListener(new SuperTextView.OnRightImageViewClickListener() {
@Override
public void onClickListener(ImageView imageView) {
Toast.makeText(ClickActivity.this, "右边图片", Toast.LENGTH_SHORT).show();
}
});
superTextView_cb.setOnSuperTextViewClickListener(new SuperTextView.OnSuperTextViewClickListener() {
@Override
public void onClickListener(SuperTextView superTextView) {
superTextView.setCbChecked(!superTextView.getCbisChecked());
}
}).setCheckBoxCheckedChangeListener(new SuperTextView.OnCheckBoxCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(ClickActivity.this, "" + isChecked, Toast.LENGTH_SHORT).show();
}
});
superTextView_switch.setOnSuperTextViewClickListener(new SuperTextView.OnSuperTextViewClickListener() {
@Override
public void onClickListener(SuperTextView superTextView) {
superTextView.setSwitchIsChecked(!superTextView.getSwitchIsChecked());
}
}).setSwitchCheckedChangeListener(new SuperTextView.OnSwitchCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(ClickActivity.this, "" + isChecked, Toast.LENGTH_SHORT).show();
}
});
3.2.4 使用第三方库(Picasso 或者 Glide)加载网络图片
String url1 = "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3860616424,1789830124&fm=80&w=179&h=119&img.PNG";
String url2 = "https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=219781665,3032880226&fm=80&w=179&h=119&img.JPEG";
String url3 = "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3860616424,1789830124&fm=80&w=179&h=119&img.PNG";
Picasso.with(this)
.load(url1)
.placeholder(R.drawable.head_default)
.into(superTextView.getLeftIconIV());
Glide.with(this)
.load(url2)
.placeholder(R.drawable.head_default)
.fitCenter()
.into(superTextView2.getRightIconIV());
Glide.with(this)
.load(url3)
.placeholder(R.drawable.head_default)
.into(new SimpleTarget() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation super GlideDrawable> glideAnimation) {
superTextView3.setRightTvDrawableRight(resource);
}
});
3.2.5、属性说明(以下属性全部可以通过 xml 文件配置和代码进行设置)
属性名 | 字段 | 描述 | 默认值 |
---|---|---|---|
sLeftTextString | string | 左边文字字符串 | |
sLeftTopTextString | string | 左上文字字符串 | |
sLeftBottomTextString | string | 左下文字字符串 | |
sCenterTextString | string | 中间文字字符串 | |
sCenterTopTextString | string | 中上文字字符串 | |
sCenterBottomTextString | string | 中下文字字符串 | |
sRightTextString | string | 右边文字字符串 | |
sRightTopTextString | string | 右上文字字符串 | |
sRightBottomTextString | string | 右下文字字符串 | |
sLeftTextColor | color | 左边文字颜色 | 默认 0xFF373737 |
sLeftTopTextColor | color | 左上文字颜色 | 默认 0xFF373737 |
sLeftBottomTextColor | color | 左下文字颜色 | 默认 0xFF373737 |
sCenterTextColor | color | 中间文字颜色 | 默认 0xFF373737 |
sCenterTopTextColor | color | 中上文字颜色 | 默认 0xFF373737 |
sCenterBottomTextColor | color | 中下文字颜色 | 默认 0xFF373737 |
sRightTextColor | color | 左边文字颜色 | 默认 0xFF373737 |
sRightTopTextColor | color | 右上文字颜色 | 默认 0xFF373737 |
sRightBottomTextColor | color | 右下文字颜色 | 默认 0xFF373737 |
sLeftTextSize | dimension | 左边字体大小 | 默认 15sp |
sLeftTopTextSize | dimension | 左上字体大小 | 默认 15sp |
sLeftBottomTextSize | dimension | 左下字体大小 | 默认 15sp |
sCenterTextSize | dimension | 中间字体大小 | 默认 15sp |
sCenterTopTextSize | dimension | 中上字体大小 | 默认 15sp |
sCenterBottomTextSize | dimension | 中下字体大小 | 默认 15sp |
sRightTextSize | dimension | 右边字体大小 | 默认 15sp |
sRightTopTextSize | dimension | 右上字体大小 | 默认 15sp |
sRightBottomTextSize | dimension | 右下字体大小 | 默认 15sp |
sLeftLines | integer | 左边文字显示行数 | 默认不设置 |
sLeftTopLines | integer | 左上文字显示行数 | 默认不设置 |
sLeftBottomLines | integer | 左下文字显示行数 | 默认不设置 |
sCenterLines | integer | 中间文字显示行数 | 默认不设置 |
sCenterTopLines | integer | 中上文字显示行数 | 默认不设置 |
sCenterBottomLines | integer | 中下文字显示行数 | 默认不设置 |
sRightLines | integer | 右边文字显示行数 | 默认不设置 |
sRightTopLines | integer | 右上文字显示行数 | 默认不设置 |
sRightBottomLines | integer | 右下文字显示行数 | 默认不设置 |
sLeftMaxEms | integer | 左边文字显示个数 | 默认不设置 |
sLeftTopMaxEms | integer | 左上文字显示个数 | 默认不设置 |
sLeftBottomMaxEms | integer | 左下文字显示个数 | 默认不设置 |
sCenterMaxEms | integer | 中间文字显示个数 | 默认不设置 |
sCenterTopMaxEms | integer | 中上文字显示个数 | 默认不设置 |
sCenterBottomMaxEms | integer | 中下文字显示个数 | 默认不设置 |
sRightMaxEms | integer | 右边文字显示个数 | 默认不设置 |
sRightTopMaxEms | integer | 右上文字显示个数 | 默认不设置 |
sRightBottomMaxEms | integer | 右下文字显示个数 | 默认不设置 |
sLeftViewGravity | enum | 左边文字对齐方式 left_center(左对齐) center(居中) right_center(右对齐) |
默认 center |
sCenterViewGravity | enum | 中间文字对齐方式 left_center(左对齐) center(居中) right_center(右对齐) |
默认 center |
sRightViewGravity | enum | 右边文字对齐方式 left_center(左对齐) center(居中) right_center(右对齐) |
默认 center |
sLeftTvDrawableLeft | reference | 左边 TextView 左侧的 drawable | |
sLeftTvDrawableRight | reference | 左边 TextView 右侧的 drawable | |
sCenterTvDrawableLeft | reference | 中间 TextView 左侧的 drawable | |
sCenterTvDrawableRight | reference | 中间 TextView 右侧的 drawable | |
sRightTvDrawableLeft | reference | 右边 TextView 左侧的 drawable | |
sRightTvDrawableRight | reference | 右边 TextView 右侧的 drawable | |
sLeftTvDrawableWidth | dimension | 左边 TextView 的 drawable 的宽度 | |
sLeftTvDrawableHeight | dimension | 左边 TextView 的 drawable 的高度 | |
sCenterTvDrawableWidth | dimension | 中间 TextView 的 drawable 的宽度 | |
sCenterTvDrawableHeight | dimension | 中间 TextView 的 drawable 的高度 | |
sRightTvDrawableWidth | dimension | 右边 TextView 的 drawable 的宽度 | |
sRightTvDrawableHeight | dimension | 右边 TextView 的 drawable 的高度 | |
sTextViewDrawablePadding | dimension | TextView 的 drawable 对应的 Padding | 默认 10dp |
sLeftViewWidth | dimension | 左边 textView 的宽度 为了中间文字左对齐的时候使用 | |
sTopDividerLineMarginLR | dimension | 上边分割线的 MarginLeft 和 MarginRight | 默认 0dp |
sTopDividerLineMarginLeft | dimension | 上边分割线的 MarginLeft | 默认 0dp |
sTopDividerLineMarginRight | dimension | 上边分割线的 MarginRight | 默认 0dp |
sBottomDividerLineMarginLR | dimension | 下边分割线的 MarginLeft 和 MarginRigh | 默认 0dp |
sBottomDividerLineMarginLeft | dimension | 下边分割线的 MarginLeft | 默认 0dp |
sBottomDividerLineMarginRight | dimension | 下边分割线的 MarginRight | 默认 0dp |
sDividerLineColor | color | 分割线的颜色 | 默认 0xFFE8E8E8 |
sDividerLineHeight | dimension | 分割线的高度 | 默认 0.5dp |
sDividerLineType | enum | 分割线显示方式 none(不显示分割线) top(显示上边的分割线) bottom(显示下边的分割线) both(显示上下两条分割线) |
默认 bottom |
sLeftViewMarginLeft | dimension | 左边 view 的 MarginLeft | 默认 10dp |
sLeftViewMarginRight | dimension | 左边 view 的 MarginRight | 默认 10dp |
sCenterViewMarginLeft | dimension | 中间 view 的 MarginLeft | 默认 10dp |
sCenterViewMarginRight | dimension | 中间 view 的 MarginRight | 默认 10dp |
sRightViewMarginLeft | dimension | 右边 view 的 MarginLeft | 默认 10dp |
sRightViewMarginRight | dimension | 右边 view 的 MarginRight | 默认 10dp |
sLeftTextIsBold | boolean | 左边文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sLeftTopTextIsBold | boolean | 左上文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sLeftBottomTextIsBold | boolean | 左下文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sCenterTextIsBold | boolean | 中间文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sCenterTopTextIsBold | boolean | 中上文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sCenterBottomTextIsBold | boolean | 中下文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sRightTextIsBold | boolean | 右边文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sRightTopTextIsBold | boolean | 右上文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sRightBottomTextIsBold | boolean | 右下文字是否加粗 | 默认 false(暂时去除此属性改为代码动态配置) |
sLeftIconRes | reference | 左边图片资源 可以用来显示网络图片或者本地 | |
sRightIconRes | reference | 右边图片资源 可以用来显示网络图片或者本地 | |
sLeftIconWidth | dimension | 左边图片资源的宽度 用于固定图片大小的时候使用 | |
sLeftIconHeight | dimension | 左边图片资源的高度 用于固定图片大小的时候使用 | |
sRightIconWidth | dimension | 右边图片资源的宽度 用于固定图片大小的时候使用 | |
sRightIconHeight | dimension | 右边图片资源的高度 用于固定图片大小的时候使用 | |
sLeftIconMarginLeft | dimension | 左边图片资源的 MarginLeft | 默认 10dp |
sRightIconMarginRight | dimension | 右边图片资源的 MarginLeft | 默认 10dp |
sCenterSpaceHeight | dimension | 上中下三行文字的间距 | 默认 5dp |
sRightCheckBoxRes | reference | 右边 CheckBox 的资源 | |
sRightCheckBoxMarginRight | dimension | 右边 CheckBox 的 MarginRight | 默认 10dp |
sIsChecked | boolean | 右边 CheckBox 是否选中 | 默认 false |
sUseRipple | boolean | 是否开启点击出现水波效果 | 默认 true |
sBackgroundDrawableRes | reference | SuperTextView 的背景资源 | |
sRightViewType | enum | 右边显示的特殊 View checkbox switchBtn |
默认都不显示 |
sRightSwitchMarginRight | dimension | 右边 SwitchBtn 的 MarginRight | 默认 10dp |
sSwitchIsChecked | boolean | 右边 SwitchBtn 是否选中 | 默认 false |
sTextOff | string | TextOff | 默认"" |
sTextOn | string | TextOn | 默认"" |
sSwitchMinWidth | dimension | SwitchMinWidth | 系统默认 |
sSwitchPadding | dimension | SwitchPadding | 系统默认 |
sThumbTextPadding | dimension | ThumbTextPadding | 系统默认 |
sThumbResource | reference | 右边 SwitchBtn 自定义选中资源 | 系统默认 |
sTrackResource | reference | 右边 SwitchBtn 自定义未选中资源 | 系统默认 |
sUseShape | boolean | 是否使用 shape 设置圆角及触摸反馈 设为 true 之后才能使用一下属性 |
默认 false |
sShapeSolidColor | color | 填充色 | 默认 false |
sShapeSelectorPressedColor | color | 按下时候的颜色 | 默认 0xffffffff |
sShapeSelectorNormalColor | color | 正常显示的颜色 | 默认 0xffffffff |
sShapeCornersRadius | dimension | 四个角的圆角半径 | 默认 0dp |
sShapeCornersTopLeftRadius | dimension | 左上角的圆角半径 | 默认 0dp |
sShapeCornersTopRightRadius | dimension | 右上角的圆角半径 | 默认 0dp |
sShapeCornersBottomLeftRadius | dimension | 左下角的圆角半径 | 默认 0dp |
sShapeCornersBottomRightRadius | dimension | 右下角的圆角半径 | 默认 0dp |
sShapeStrokeWidth | dimension | 边框宽度 | 默认 0dp |
sShapeStrokeDashWidth | dimension | 虚线宽度 | 默认 0dp |
sShapeStrokeDashGap | dimension | 虚线间隙宽度 | 默认 0dp |
sShapeStrokeColor | color | 边框颜色 | 默认 0dp |
sLeftTextBackground | reference | 左边 textView 的背景 | |
sCenterTextBackground | reference | 中间 textView 的背景 | |
sRightTextBackground | reference | 右边 textView 的背景 | |
sLeftTextGravity | enum | 左边 TextView 内文字对齐方式 left(左对齐) center(居中) right(右对齐) |
默认 left |
sCenterTextGravity | enum | 中间 TextView 内文字对齐方式 left(左对齐) center(居中) right(右对齐) |
默认 left |
sRightTextGravity | enum | 右边 TextView 内文字对齐方式 left(左对齐) center(居中) right(右对齐) |
默认 left |
sLeftIconShowCircle | boolean | 左边 ImageView 是否显示为圆形 | 默认 false |
sRightIconShowCircle | boolean | 左边 ImageView 是否显示为圆形 | 默认 false |
黑格尔曾说过:存在即合理。SuperTextView 的出现应该就是某种需求下的产物。