SuperTextView
Introduction: 一个功能强大的 TextView,可以满足日常大部分布局方式,开发者可已自行组合属性配置出属于自己风格的样式!
Tags:
TextView-重磅推出 SuperTextView2.x 版本,属性参数相比 1.x 有些变化,1.x 的用户升级 2.x 的时候请注意
1、功能描述
SuperTextView是一个功能强大的 View,可以满足日常大部分布局样式,开发者可已自行组合属性配置出属于自己风格的样式!可能描述起来没有概念,还是直接看效果图吧!
SuperButton拥有 shape 文件的大部分属性,从此写 shape 属性变得非常简单
CommonTextView只是 SuperTextView 的逻辑简化,其实功能并不差少哦,有兴趣的可以看看
如果觉得对你有用的话,点一下右上的星星赞一下吧!
2、 效果 Demo 下载地址
3、如何使用
3.1、Android Studio 导入方法,添加 Gradle 依赖
先在项目根目录的 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在 dependencies 添加:
dependencies {
...
compile 'com.github.lygttpod:SuperTextView:VERSION_CODE'
}
温馨提示:项目中部分代码使用 kotlin 写的,所以你的项目需要支持 kotlin
注意:VERSION_CODE 为
后面的数字,即最新的release版本号
3.2、项目中如何使用
3.2.1、布局中如何使用(示例中只列出部分属性,开发者可根据具体需求使用其他属性)
<com.allen.library.SuperTextView
android:layout_width="match_parent"
android:layout_height="80dp"
stv:sCenterBottomTextColor="@color/colorAccent"
stv:sCenterBottomTextString="限额说明>>"
stv:sCenterTopTextString=" "
stv:sCenterViewGravity="left_center"
stv:sLeftBottomTextString="招商银行(8888)"
stv:sLeftIconRes="@drawable/bank_zhao_shang"
stv:sLeftTopTextString="银行卡支付"
stv:sLeftViewGravity="left_center"
stv:sRightCheckBoxRes="@drawable/circular_check_bg"
stv:sRightViewType="checkbox" />
注意:
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<GlideDrawable>() {
@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 的出现应该就是某种需求下的产物。
4、更新日志
意见反馈
或者手动加 QQ 群:688433795
如果遇到问题或者好的建议,请反馈到:issue、lygttpod@163.com 或者lygttpod@gmail.com
如果觉得对你有用的话,点一下右上的星星赞一下吧!
代码是最好的老师,更多详细用法请查看 demo:feet:
License
Copyright 2016 Allen
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

