当前位置: 首页 > news >正文

地产网站模板python官网下载安装

地产网站模板,python官网下载安装,儿童可以做的游戏视频网站,wordpress静态页面制作先上效果图 分析问题 网上有很多关于这个的代码#xff0c;实现都过于复杂了#xff0c;github上甚至还看到一篇文章600多行代码#xff0c;结果一跑起来全是bug。还是自己写吧#xff01;#xff01;#xff01; 如果我们需要换行的查看全文、收起全…先上效果图 分析问题 网上有很多关于这个的代码实现都过于复杂了github上甚至还看到一篇文章600多行代码结果一跑起来全是bug。还是自己写吧 如果我们需要换行的查看全文、收起全文效果那没什么号说的因为可以直接用两个TextView然后通过判断超过行数还是没有超过行数来判断显示还是隐藏即可。这没有什么难度这里我们需要实现同一TextView实现。 要在 TextView 的部分文字上添加颜色和点击事件您可以使用 SpannableString 和 ClickableSpan 来实现。 为了避免重复代码那我们肯定是自定义View实现新建一个ScalingTextView继承AppCompatTextView class ScalingTextView(context: Context, attrs: AttributeSet?) :AppCompatTextView(context, attrs) {}然后我们需要几个参数 !--一段测试文字-- string namescaling_str这是一段ScalingTextView的折叠测试文字测试多行显示的时候是否可以”查看全文“、”收起全文“这个功能是否正常呢但是这个问题必须要超过两行才行因此我现在每打的一个字都是在凑字数你懂了吧/stringSpannableString 和 ClickableSpan 对象 private var spannableString: SpannableString? null// 创建 ClickableSpan 对象val clickableSpan object : ClickableSpan() {override fun onClick(widget: View) {// 在这里处理点击事件toggleText()}override fun updateDrawState(ds: TextPaint) {// 设置点击文字的颜色ds.color Color.BLUE// 如果不希望点击文字有下划线可以注释下面这行代码ds.isUnderlineText true}}fun toggleText() {if (isCollapsed) {// 展开文本maxLines Integer.MAX_VALUEisCollapsed false} else {// 折叠文本maxLines maxLinesCollapsedisCollapsed true}}当然还有些其他便于设置的参数例如 private var maxLinesCollapsed: Int 2//默认折叠行数private var isCollapsed: Boolean falseprivate var mOriginText: String //文本内容private ColorInt var mOriginTextColor: Int//折叠文字颜色private val DEFAULT_OPEN_SUFFIX 查看全文private val DEFAULT_CLOSE_SUFFIX 收起全文private val ellipsis ...当然这些参数我们需要通过xml里直接配置不用每次都set一堆方法对吧所以添加自定义属性 declare-styleable namescaling_text_viewattr namecontent_text formatstring/attrattr namecontent_text_color formatcolor/attr/declare-styleable然后获取这几个自定义参数大家可以自行增加这里只为演示内容 init {val typedValue context.obtainStyledAttributes(attrs, R.styleable.scaling_text_view)mOriginText typedValue.getString(R.styleable.scaling_text_view_content_text).toString()mOriginTextColor typedValue.getColor(R.styleable.scaling_text_view_content_text_color,ContextCompat.getColor(context,R.color.themeColor)).toInt()}最后我们如何实现功能呢我们可以从几个方向去分析 在文字结尾追加上“...”省略号和 查看全文、收起全文这个不难当超出最大限制行数的时候我们需要截取掉多余内容并且为“...”省略号和 查看全文、收起全文空出位置为 查看全文、收起全文添加颜色最后为 查看全文、收起全文添加点击事件最后的最后刷新文本内容 那么我们可以重写onMeasure 这里我们用到一个方法getLineEnd val lineEndIndex layout.getLineEnd(maxLinesCollapsed - 1)val newText text.subSequence(0, lineEndIndex - ellipsis.length 1 - DEFAULT_OPEN_SUFFIX.length 1).toString().trim { it } ellipsis DEFAULT_OPEN_SUFFIX创建SpannableString对象 spannableString SpannableString(newText);//设置点击事件spannableString?.setSpan(clickableSpan,newText.lastIndexOf(DEFAULT_OPEN_SUFFIX),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX) DEFAULT_OPEN_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)//设置文本颜色spannableString?.setSpan(ForegroundColorSpan(mOriginTextColor),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX) DEFAULT_OPEN_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)最后设置刷新文本 text spannableStringmovementMethod LinkMovementMethod.getInstance()super.onMeasure(widthMeasureSpec, heightMeasureSpec)好了我们搞定了完整代码 class ScalingTextView(context: Context, attrs: AttributeSet?) :AppCompatTextView(context, attrs) {private var maxLinesCollapsed: Int 2private var isCollapsed: Boolean falseprivate val TAG: String ScalingTextView::class.java.simpleNameprivate var mOriginText: Stringprivate ColorInt var mOriginTextColor: Intprivate val DEFAULT_OPEN_SUFFIX 查看全文private val DEFAULT_CLOSE_SUFFIX 收起全文private val ellipsis ...private var spannableString: SpannableString? nullinit {val typedValue context.obtainStyledAttributes(attrs, R.styleable.scaling_text_view)mOriginText typedValue.getString(R.styleable.scaling_text_view_content_text).toString()mOriginTextColor typedValue.getColor(R.styleable.scaling_text_view_content_text_color,ContextCompat.getColor(context,R.color.themeColor)).toInt()text mOriginText}// 创建 ClickableSpan 对象val clickableSpan object : ClickableSpan() {override fun onClick(widget: View) {// 在这里处理点击事件toggleText()}override fun updateDrawState(ds: TextPaint) {// 设置点击文字的颜色ds.color Color.BLUE// 如果不希望点击文字有下划线可以注释下面这行代码ds.isUnderlineText true}}fun toggleText() {if (isCollapsed) {// 展开文本maxLines Integer.MAX_VALUEisCollapsed false} else {// 折叠文本maxLines maxLinesCollapsedisCollapsed true}}override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {super.onMeasure(widthMeasureSpec, heightMeasureSpec)if (layout.lineCount maxLinesCollapsed spannableString null) {//原文本等于或者小于默认折叠行数的时候不追加点击事件等return}if (layout ! null layout.lineCount maxLinesCollapsed isCollapsed) {val lineEndIndex layout.getLineEnd(maxLinesCollapsed - 1)val newText text.subSequence(0, lineEndIndex - ellipsis.length 1 - DEFAULT_OPEN_SUFFIX.length 1).toString().trim { it } ellipsis DEFAULT_OPEN_SUFFIXspannableString SpannableString(newText);//设置点击事件spannableString?.setSpan(clickableSpan,newText.lastIndexOf(DEFAULT_OPEN_SUFFIX),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX) DEFAULT_OPEN_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)//设置文本颜色spannableString?.setSpan(ForegroundColorSpan(mOriginTextColor),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX),newText.lastIndexOf(DEFAULT_OPEN_SUFFIX) DEFAULT_OPEN_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)text spannableStringmovementMethod LinkMovementMethod.getInstance()super.onMeasure(widthMeasureSpec, heightMeasureSpec)}else if (layout ! null !isCollapsed) {val newText mOriginText DEFAULT_CLOSE_SUFFIXspannableString SpannableString(newText);//设置点击事件spannableString?.setSpan(clickableSpan,newText.lastIndexOf(DEFAULT_CLOSE_SUFFIX),newText.lastIndexOf(DEFAULT_CLOSE_SUFFIX) DEFAULT_CLOSE_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)//设置文本颜色spannableString?.setSpan(ForegroundColorSpan(mOriginTextColor),newText.lastIndexOf(DEFAULT_CLOSE_SUFFIX),newText.lastIndexOf(DEFAULT_CLOSE_SUFFIX) DEFAULT_CLOSE_SUFFIX.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)text spannableStringmovementMethod LinkMovementMethod.getInstance()super.onMeasure(widthMeasureSpec, heightMeasureSpec)}}}xml里使用,这里默认是展开的你们默认隐藏的话自己实现 com.github.demo.wight.ScalingTextViewandroid:idid/scalingTextViewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginTop12dpapp:content_textstring/scaling_strapp:content_text_colorcolor/themeColor /
http://www.hkea.cn/news/14340916/

相关文章:

  • 小说网站建设的支柱青岛网站设计建议i青岛博采
  • 怎样设计一个公司网站济南做网站建设公司
  • 青海设计网站北京贸易公司网站制作
  • 郑州网站制作推广公司wordpress做个论坛
  • 药品网站网络营销推广怎么做河南省建设厅网站资质平移办法
  • 网站可以做视频链接番禺网站建设方案
  • 网站建设优化服务案例网站改变配色方案
  • 东莞市建设小学网站网站建设相关知识
  • 网站建设详细方案模板html网页设计logo代码
  • 网站推广的网站网站商城首页怎么做吸引人
  • 做机械的有什么网站与wordpress类似的都有哪些
  • 婚纱摄影网站毕业设计php吴中快速建设网站价格
  • 建设网站青岛市用git 做网站
  • 编辑网站绑定资源在线资源库
  • 企业网站建设河北沧州网站制作的流程
  • 金山集团网站建设云南网站建设快速优化
  • 宁波网站建设服务报价昆明网站建设是什么
  • 网站建设开发语言与平台巴中市网站建设
  • 北京网站建设公司黄页建设图书馆网站
  • 2019年建设银行安徽招聘网站网站编辑年终总结
  • 网站开发与设计专业网站建设买服务器还是数据库
  • 网站外链建设布局前端一般模仿什么网站
  • 网站在浏览器的图标怎么做鸿蒙app开发公司
  • 网站 文件服务器个人网页设计作品欣赏图片
  • 海南省旅游专业网站发展电子商务缺乏强大的专业产业资源做后盾体育健身网站建设
  • 网站建设的制度建设简创网站建设费用
  • 外贸网站怎么营销网站是谁做的
  • 十大网站建设品牌南昌 网站建设
  • 把别人的图片拿来做网站网站建设制作临沂网站建设选盛誉
  • 校园网站cms怎么查到代码是哪个网站做的