一个强大的SuperTextview

原文链接:http://p.codekk.com/detail/Android/lygttpod/SuperTextView

SuperTextView

项目地址:lygttpod/SuperTextView 

简介:一个功能强大的 TextView,可以满足日常大部分布局方式,开发者可已自行组合属性配置出属于自己风格的样式!

更多:作者   提 Bug   

标签:

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:2.1.6'
        }

重写 SuperTextView,功能更加全面,部分方法及属性有变更,1.x 版本的老用户请注意

3.2、项目中如何使用

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 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 的出现应该就是某种需求下的产物。

你可能感兴趣的:(自用)