(十) 盘古UI,详情小标题副标题的实现,方便快速开发详情PanguFormTitle!

(十) 盘古UI,详情小标题副标题的实现,方便快速开发详情PanguFormTitle!

盘古UI,较为全面的自定义UI框架,帮助你绝对的快速开发!(长期维护中)

控件位置:
com.smart.pangu_ui_lib.widget.PanguFormTitle

demo地址,点击查看github

详情|表单的小标题

可以在详情或者表单的页面使用这个小标题!

1, 样例展示图

请添加图片描述

2, 使用说明

1,布局
  <com.smart.pangu_ui_lib.widget.PanguFormTitle
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:pgft_icon_right="@mipmap/ic_arrow_right"
                app:pgft_mid_title="中间内容"
                app:pgft_must="true"
                android:id="@+id/pg_ftitle"
                app:pgft_show_line="false"
                app:pgft_show_right_title="visiable"
                app:pgft_title="标题" />
2,方法使用
   mPgFtitle.setOnRightClick(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showToast("点击了右标题");
            }
        });
        mPgFtitle.setOnRightIconClick(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showToast("点击了右图标");
            }
        });

3, 方法和属性说明

attr属性方法 method介绍 introduction
pgft_title_sizesetTitleSize(int titleSize)设置标题字体的大小
pgft_title_colorsetTitleColor(int titleColor)设置标题的颜色
pgft_title_text_stylesetTitleTextStyle(int typeface)设置标题样式,typeface Typeface.BOLD 加粗 Typeface.NORMAL 正常
pgft_titlesetTitle(String title)
setTitle(CharSequence title)
设置标题名称
pgft_padding_startsetPaddingStart(float paddingStart)paddingStart
pgft_right_titlesetRightTitle(String title)设置右侧标题
pgft_mustsetIsMust(boolean must)是否是必填
pgft_show_lineshowLine(boolean showLine)显示下面的线
pgft_backgroundsetBackgroundColorFt(@ColorInt int color)设置背景颜色
pgft_show_right_titlesetShowRight(boolean has)是否显示右侧标题,默认是"更多"文字
pgft_icon_rightsetRightRIcon(@DrawableRes int resId)设置右侧图标 , 0 不显示
pgft_mid_titlesetMidText(String midTitle)设置控件中间的文字
pgft_mid_textColorsetMidTextColor(int midTitleTextColor)设置中间文字的字体颜色
----LinearLayout getMidContentView()获取中间的线性布局,可以自定义布局内容
----setOnRightClick(OnClickListener listener)右侧标题的点击事件
----setOnRightIconClick(OnClickListener listener)右侧图标的点击事件

4, 代码和方法简析

public class PanguFormTitle extends BaseView {
    private LinearLayout mLlRoot;
    private View mViewLine;
    private TextView mTvMore;
    private ImageView mIvRight;
    private LinearLayout mLlMidContent;
    private RelativeLayout mRlContent;
    private TextView mTvName;
    private TextView mTvMust;


    private int showRightTitle;
    private float paddingStart;
    private String midTitle;
    private int midTitleTextColor;
    private int backgroundColor;
    private String title;
    private String rightTitle;//右侧标题
    private int iconRight;
    private int titleTextStyle;//title的加粗
    private int titleColor;//标题颜色
    private int titleSize;//标题字体大小
    private boolean must;//必填红星
    private boolean showLine;//是否展示下面的线

    @Override
    protected int getLayoutId() {
        return R.layout.pangu_formtitle;
    }

    public PanguFormTitle(Context context) {
        super(context);
    }

    public PanguFormTitle(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void initView(Context context, AttributeSet attrs, int defStyleAttr) {
        mLlRoot = findViewById(R.id.ll_root);
        mViewLine = findViewById(R.id.view_line);
        mTvMore = findViewById(R.id.tv_more);
        mIvRight = findViewById(R.id.iv_right);
        mLlMidContent = findViewById(R.id.ll_mid_content);
        mRlContent = findViewById(R.id.rl_content);
        mTvName = findViewById(R.id.tv_name);
        mTvMust = findViewById(R.id.tv_must);

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PanguFormTitle
                , defStyleAttr, 0);
        //名称
        title = typedArray.getString(R.styleable.PanguFormTitle_pgft_title);
        rightTitle = typedArray.getString(R.styleable.PanguFormTitle_pgft_right_title);
        must = typedArray.getBoolean(R.styleable.PanguFormTitle_pgft_must, false);
        showLine = typedArray.getBoolean(R.styleable.PanguFormTitle_pgft_show_line, false);
        backgroundColor = typedArray.getColor(R.styleable.PanguFormTitle_pgft_background,
                Color.TRANSPARENT);
        showRightTitle = typedArray.getInt(R.styleable.PanguFormTitle_pgft_show_right_title, View.GONE);
        //中间
        midTitle = typedArray.getString(R.styleable.PanguFormTitle_pgft_mid_title);
        midTitleTextColor = typedArray.getColor(R.styleable.PanguFormTitle_pgft_mid_textColor,
                Color.BLACK);
        //右侧图标
        iconRight = typedArray.getResourceId(R.styleable.PanguFormTitle_pgft_icon_right, 0);
        paddingStart = typedArray.getDimension(R.styleable.PanguFormTitle_pgft_padding_start, PhoneHelper.dip2px(mContext, 12));
        //title的加粗
        titleTextStyle = typedArray.getInt(R.styleable.PanguFormTitle_pgft_title_text_style, Typeface.BOLD);
        //标题的颜色
        titleColor = typedArray.getInteger(R.styleable.PanguFormTitle_pgft_title_color, Color.parseColor("#30353D"));
        //标题字体大小
        titleSize = typedArray.getDimensionPixelSize(R.styleable.PanguFormTitle_pgft_title_size, PhoneHelper.sp2px(getContext(), 14));

        typedArray.recycle();

        init();
    }


    private void init() {

        //设置标题名称
        setTitle(title);
        setIsMust(must);
        setBackgroundColorFt(backgroundColor);
        showLine(showLine);
        setRightTitle(rightTitle);
        setRightRIcon(iconRight);
        showRightTitle(showRightTitle);
        setPaddingStart(paddingStart);
        setTitleTextStyle(titleTextStyle);
        //标题的颜色
        setTitleColor(titleColor);
        setTitleSize(titleSize);
        setMidText(midTitle);
        setMidTextColor(midTitleTextColor);
    }

    /**
     * 设置中间文字的字体颜色
     *
     * @param midTitleTextColor 颜色值
     */
    public void setMidTextColor(int midTitleTextColor) {
        this.midTitleTextColor = midTitleTextColor;
        LinearLayout midContentView = getMidContentView();
        if (midContentView != null && midContentView.getChildCount() > 0 && midContentView.getChildAt(0) instanceof TextView) {
            TextView childAt = (TextView) midContentView.getChildAt(0);
            childAt.setTextColor(midTitleTextColor);
        }
    }

    /**
     * 设置控件中间的文字
     *
     * @param midTitle
     */
    public void setMidText(String midTitle) {
        TextView tv2 = new TextView(mContext);
        tv2.setText(midTitle);
        tv2.setTextSize(14);
        tv2.setTextColor(midTitleTextColor);
        getMidContentView().removeAllViews();
        getMidContentView().addView(tv2);
    }

    /**
     * paddingStart
     *
     * @param paddingStart
     */
    public void setPaddingStart(float paddingStart) {
        mRlContent.setPadding((int) paddingStart, PhoneHelper.dip2px(mContext, 9), PhoneHelper.dip2px(mContext, 12), PhoneHelper.dip2px(mContext, 9));
    }

    /**
     * 展示右侧标题
     *
     * @param showRightTitle {@link View#VISIBLE}{@link View#INVISIBLE}{@link View#GONE}
     */
    public void showRightTitle(int showRightTitle) {
        if (mTvMore != null)
            mTvMore.setVisibility(showRightTitle);

    }

    /**
     * 获取中间的线性布局,可以自定义布局内容
     *
     * @return LinearLayout
     */
    public LinearLayout getMidContentView() {
        return mLlMidContent;
    }


    /**
     * 显示下面的线
     *
     * @param showLine
     */
    public void showLine(boolean showLine) {
        if (mViewLine != null) {
            mViewLine.setVisibility(showLine ? VISIBLE : GONE);
        }
    }


    /**
     * 设置背景颜色
     *
     * @param color
     */
    public void setBackgroundColorFt(@ColorInt int color) {

        if (mLlRoot != null) {
            mLlRoot.setBackgroundColor(color);
        }
    }

    /**
     * 设置标题名称
     *
     * @param title
     */
    public void setTitle(String title) {
        if (mTvName != null) {
            mTvName.setText(title);
        }
    }

    /**
     * 设置标题名称
     *
     * @param title
     */
    public void setTitle(CharSequence title) {
        if (mTvName != null) {
            mTvName.setText(title);
        }
    }

    /**
     * 设置标题样式
     *
     * @param typeface Typeface.BOLD 加粗  Typeface.NORMAL 正常
     */
    public void setTitleTextStyle(int typeface) {
        if (mTvName != null) {
            mTvName.setTypeface(Typeface.defaultFromStyle(typeface));
        }

    }

    /**
     * 设置标题字体的大小
     *
     * @param titleSize
     */
    public void setTitleSize(int titleSize) {
        mTvName.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
    }

    /**
     * 设置标题的颜色
     *
     * @param titleColor
     */
    public void setTitleColor(int titleColor) {
        if (mTvName != null) {
            mTvName.setTextColor(titleColor);
        }
    }

    /**
     * 是否是必填
     *
     * @param must
     */
    public void setIsMust(boolean must) {
        if (mTvMust != null) {
            mTvMust.setVisibility(must ? VISIBLE : GONE);
        }
    }

    /**
     * 是否显示右侧标题,默认是"更多"文字
     *
     * @param has
     */
    public void setShowRight(boolean has) {
        mTvMore.setVisibility(has ? VISIBLE : GONE);
    }

    /**
     * 设置右侧标题
     *
     * @param title 标题
     */
    public void setRightTitle(String title) {
        if (mTvMore != null) {
            mTvMore.setText(TextUtils.isEmpty(title) ? "更多>" : title);
        }
    }

    /**
     * 右侧标题的点击事件
     *
     * @param listener 监听
     */
    public void setOnRightClick(OnClickListener listener) {
        mTvMore.setOnClickListener(listener);
    }

    /**
     * 设置右侧图标 , 0 不显示
     *
     * @param resId 资源id
     */
    public void setRightRIcon(@DrawableRes int resId) {
        if (mIvRight != null) {
            if (resId != 0) {
                mIvRight.setVisibility(VISIBLE);
                mIvRight.setImageResource(resId);
            } else {
                mIvRight.setVisibility(GONE);
            }
        }
    }

    /**
     * 右侧图标的点击事件
     *
     * @param listener 监听
     */
    public void setOnRightIconClick(OnClickListener listener) {
        mIvRight.setOnClickListener(listener);
    }

}

5, 获取地址

demo地址,点击查看github
欢迎您扫码安装体验demo
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/572033.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MapMagic 2 Biomes and Functions

MapMagic 2(免费)世界生成器官方模块。支持基于遮罩混合几个图形,从而可以在无限地形上混合不同的生物群落。也随附函数节点,从而可以在子图中执行复杂的生成过程。将它们视作含有输入和输出连接器的生物群落。请注意,必须使用 MapMagic 2 的现有安装才能使用该模块。 下…

护眼台灯哪个牌子最好?消费者信赖之选护眼灯十大品牌推荐

孩子入学后&#xff0c;对其的关注和照料必须加倍。特别是眼睛的健康&#xff0c;在学习过程中显得尤为关键。为了减轻孩子的眼睛疲劳&#xff0c;降低近视的风险&#xff0c;选择一款优质的护眼台灯至关重要。护眼台灯哪个牌子最好&#xff1f;目前市场上书客、飞利浦、松下等…

微信小程序中,plugins 配置项如何配置

在微信小程序中&#xff0c;plugins 配置项用于声明小程序需要使用的第三方插件。以下是如何配置 plugins 的基本步骤&#xff1a; 获取插件的AppID和版本信息&#xff1a; 首先&#xff0c;你需要在微信开放平台或微信公众平台上找到你需要的插件&#xff0c;并获取其AppID和版…

【漏洞复现】泛微e-office系统ajax.php接口存在任意文件上传漏洞

漏洞描述 泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件。泛微 E-Office 9.5版本存在代码问题漏洞,泛微e-office系统ajax.php接口存在任意文件上传漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,…

大模型推理优化之 KV Cache

原文&#xff1a;https://zhuanlan.zhihu.com/p/677660376 目录 收起 KV Cache 定义 KV Cache 原理 KV Cache 实现 KV Cache 显存占用分析 KV Cache 优化方法 在语言模型推理的过程中&#xff0c;性能优化一直是一个备受关注的话题。LLM&#xff08;Large Language Mode…

基于stm32的UART高效接收DMA+IDLE编程示例

目录 基于stm32的UART高效接收DMAIDLE编程示例实验目的场景使用原理图UART的三种编程方式IDLE程序设计串口配置配置中断配置DMA代码片段本文中使用的测试工程 基于stm32的UART高效接收DMAIDLE编程示例 本文目标&#xff1a;基于stm32_h5的freertos编程示例 按照本文的描述&am…

训练营第三十三天贪心(第五部分重叠区间问题)

训练营第三十三天贪心&#xff08;第五部分重叠区间问题&#xff09; 435.无重叠区间 力扣题目链接 题目 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 示例 1: 输入: …

MySQL多版本并发控制mvcc原理浅析

文章目录 1.mvcc简介1.1mvcc定义1.2mvcc解决的问题1.3当前读与快照读 2.mvcc原理2.1隐藏字段2.2版本链2.3ReadView2.4读视图生成原则 3.rc和rr隔离级别下mvcc的不同 1.mvcc简介 1.1mvcc定义 mvcc(Multi Version Concurrency Control)&#xff0c;多版本并发控制&#xff0c;是…

Kubeedge:Metamanager源码速读(不定期更新)

Kubeedge源码版本&#xff1a;v1.15.1 在看Metamanager之前&#xff0c;先看一下Metamanager源码的目录结构&#xff08;位于edge/pkg下&#xff09;和官方文档&#xff1a; 目录结构如下面的两张图所示。请忽略绿色的文件高亮&#xff0c;这是Jetbrains goland对未提交修改的…

【教程】MySQL数据库学习笔记(五)——约束(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

【求助】西门子S7-200PLC定时中断+数据归档的使用

前言 已经经历了种种磨难来记录我的数据&#xff08;使用过填表程序、触摸屏的历史记录和数据归档&#xff09;之后&#xff0c;具体可以看看这篇文章&#xff1a;&#x1f6aa;西门子S7-200PLC的数据归档怎么用&#xff1f;&#xff0c;出现了新的问题。 问题的提出 最新的…

25 - MOV 指令

---- 整理自B站UP主 踌躇月光 的视频 文章目录 1. 指令系统设计2. MOV 指令3. 实现3.1 CPU 电路图3.2 代码实现3.3 实验过程3.4 实验结果3.5 实验工程 1. 指令系统设计 指令 IR 8 位程序状态字 4 位微程序周期 4 位 2. MOV 指令 MOV A, 5; 立即寻址 MOV A, B; 寄存器寻址 MO…

基于PaddlePaddle平台训练物体分类——猫狗分类

学习目标&#xff1a; 在百度的PaddlePaddle平台训练自己需要的模型&#xff0c;以训练一个猫狗分类模型为例 PaddlePaddle平台&#xff1a; 飞桨&#xff08;PaddlePaddle&#xff09;是百度开发的深度学习平台&#xff0c;具有动静统一框架、端到端开发套件等特性&#xf…

tailwindcss在使用cdn引入静态html的时候,vscode默认不会提示问题

1.首先确保vscode下载tailwind插件&#xff1a;Tailwind CSS IntelliSense 2.需要在根目录文件夹创建一个tailwind.config.js文件 export default {theme: {extend: {// 可根据需要自行配置&#xff0c;空配置项可以正常使用},}, }3.在html文件的标签中引入配置文件&#xf…

程序员到架构师,除了代码,还有文档和图

文章目录 前言一、书面设计文档文档应该作为代码和口头交流的补充文档应该注意鲜活 二、图——架构讨论的直观语言总结 前言 作为人类&#xff0c;我们天生就被视觉所吸引。在这个信息爆炸的时代&#xff0c;从精炼的代码到清晰的文档&#xff0c;再到直观的图&#xff0c;我们…

【数据结构】串(String)

文章目录 基本概念顺序存储结构比较当前串与串s的大小取子串插入删除其他构造函数拷贝构造函数扩大数组空间。重载重载重载重载[]重载>>重载<< 链式存储结构链式存储结构链块存储结构 模式匹配朴素的模式匹配算法(BF算法)KMP算法字符串的前缀、后缀和部分匹配值nex…

Parade Series - CoreAudio Reformating

// 获得音频播放设备格式信息CComHeapPtr<WAVEFORMATEX> pDeviceFormat;pAudioClient->GetMixFormat(&pDeviceFormat);constexpr int REFTIMES_PER_SEC 10000000; // 1 reference_time 100nsconstexpr int REFTIMES_PER_MILLISEC 10000;// Microsoftif (p…

Golang | Leetcode Golang题解之第49题字母异位词分组

题目&#xff1a; 题解&#xff1a; func groupAnagrams(strs []string) [][]string {mp : map[[26]int][]string{}for _, str : range strs {cnt : [26]int{}for _, b : range str {cnt[b-a]}mp[cnt] append(mp[cnt], str)}ans : make([][]string, 0, len(mp))for _, v : ra…

Alibaba 的fastjson源码详解

一、概述 Fastjson 是阿里巴巴开源的一个 Java 工具库&#xff0c;它常常被用来完成 Java 的对象与 JSON 格式的字符串的相互转化。 Fastjson 可以操作任何 Java 对象&#xff0c;即使是一些预先存在的没有源码的对象。 二、源码分析 1.首先以fastjson-1.2.70为例&#xff0c;…

nodejs

334 先下载zip文件&#xff0c;然后加上.zip,可以看到两个文件 在user中可以看到 输入即可得到flag。 335. 这里提到eval函数&#xff0c;eval中可以执行js代码&#xff0c;可以尝试使用这个函数进行测试 payload&#xff08;显示当前目录下的文件和文件夹列表&#xff09; …