中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

莆田做網站公司營銷推廣渠道有哪些

莆田做網站公司,營銷推廣渠道有哪些,怎樣開通微信小程序賣東西,對于職業(yè)規(guī)劃做的好的網站先上效果圖 分析問題 網上有很多關于這個的代碼,實現都過于復雜了,github上甚至還看到一篇文章600多行代碼,結果一跑起來全是bug。還是自己寫吧!!! 如果我們需要換行的"查看全文"、"收起全…

先上效果圖

在這里插入圖片描述

分析問題

網上有很多關于這個的代碼,實現都過于復雜了,github上甚至還看到一篇文章600多行代碼,結果一跑起來全是bug。還是自己寫吧!!!
如果我們需要換行的"查看全文"、"收起全文"效果那沒什么號說的,因為可以直接用兩個TextView然后通過判斷超過行數還是沒有超過行數來判斷顯示還是隱藏即可。這沒有什么難度,這里我們需要實現同一TextView實現。
要在 TextView 的部分文字上添加顏色和點擊事件,您可以使用 SpannableStringClickableSpan 來實現。
為了避免重復代碼,那我們肯定是自定義View實現,新建一個ScalingTextView,繼承AppCompatTextView

class ScalingTextView(context: Context, attrs: AttributeSet?) :AppCompatTextView(context, attrs) {}

然后我們需要幾個參數

<!--一段測試文字-->
<string name="scaling_str">這是一段ScalingTextView的折疊測試文字,測試多行顯示的時候是否可以”查看全文“、”收起全文“這個功能是否正常呢,但是這個問題必須要超過兩行才行,因此我現在每打的一個字都是在湊字數,你懂了吧!!!</string>

SpannableStringClickableSpan 對象

    private var spannableString: SpannableString? = null// 創(chuàng)建 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 name="scaling_text_view"><attr name="content_text" format="string"></attr><attr name="content_text_color" format="color"></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

創(chuàng)建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}// 創(chuàng)建 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:id="@+id/scalingTextView"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="12dp"app:content_text="@string/scaling_str"app:content_text_color="@color/themeColor"" />
http://www.risenshineclean.com/news/54184.html

相關文章:

  • 做網站一定需要服務器嗎快速排名seo
  • WordPress網站注冊賬戶百度超級鏈
  • 十大免費行情軟件在線觀看長春最專業(yè)的seo公司
  • 自己做網站建設制作常見網絡營銷推廣方法
  • 設計師常用的圖片網站港港網app下載最新版
  • java eclipse mysql 網站開發(fā)百度平臺商家app下載
  • 不用購買域名做網站河南鄭州最新消息今天
  • 網站如何做好優(yōu)化品牌營銷成功案例
  • 廣州市司法職業(yè)學校網站seo是干什么的
  • wordpress 在哪里注冊網站優(yōu)化服務
  • 贛州網站設計重慶網站seo診斷
  • 黃岡商城網站制作哪家好海南快速seo排名優(yōu)化
  • 曰本真人做爰免費網站近期熱點新聞事件
  • 昆山企業(yè)網站建設公司淘客推廣
  • 獨立ip網站建設農產品網絡營銷
  • 贛州網站制作培訓百度一下免費下載
  • 做一手房產中介用什么網站好成都網站建設seo
  • 免費企業(yè)網站 優(yōu)幫云武漢建站優(yōu)化廠家
  • 高新西區(qū)網站建設廣安seo外包
  • 獵頭做單的網站電商推廣平臺有哪些
  • 靜態(tài)網站制作wordpress模版代發(fā)軟文
  • 網站欄目結構設計新媒體營銷案例ppt
  • 做中國供應商免費網站有作用嗎怎么自己創(chuàng)建網址
  • 網站開發(fā)咨詢百度推廣優(yōu)化師
  • 云南省網站建設收費調查報告論文專業(yè)seo排名優(yōu)化費用
  • b2b網站開發(fā)源文件網站建設與管理屬于什么專業(yè)
  • 改版百度不收錄網站百度資源共享
  • 合肥網站的優(yōu)化seo外鏈怎么發(fā)
  • 做app還是做網站競價惡意點擊器
  • 上海裝修公司前十名深圳網絡優(yōu)化seo