react native實現可展開Text控制元件
原理:元件初始化時不設定Text控制元件的numberOfLines屬性,測量一下元件高度(最大高度),然後在設定numberOfLines屬性,再次測量一下元件高度(最小高度),若最大高度大與最小高度,表示需要顯示“展開”。
/* eslint new-cap: ["error", { "capIsNew": false }] */ import React, { Component, PropTypes, } from 'react'; import {View, Image, StyleSheet, Animated, Text} from 'react-native'; export default class CollapsibleText extends Component { static propTypes = { style: Text.propTypes.style, expandTextStyle:Text.propTypes.style, numberOfLines: PropTypes.number } constructor(props){ super(props); this.state = { /** 文字是否展開 */ expanded:true, numberOfLines:null, /** 展開收起文字是否處於顯示狀態 */ showExpandText:false, expandText:'展開', /** 是否處於測量階段 */ measureFlag:true } this.numberOfLines = props.numberOfLines; /** 文字是否需要展開收起功能:(實際文字內容是否超出numberOfLines限制) */ this.needExpand = true; this.measureFlag = true; } _onTextLayout(event){ if(this.measureFlag){ if(this.state.expanded){ this.maxHeight = event.nativeEvent.layout.height; this.setState({expanded:false,numberOfLines:this.numberOfLines}); }else{ this.mixHeight = event.nativeEvent.layout.height; if(this.mixHeight == this.maxHeight){ this.needExpand = false; }else{ this.needExpand = true; this.setState({showExpandText:true}) } this.measureFlag = false; } } } _onPressExpand(){ if(!this.state.expanded){ this.setState({numberOfLines:null,expandText:'收起',expanded:true}) }else{ this.setState({numberOfLines:this.numberOfLines,expandText:'展開',expanded:false}) } } render() { const { numberOfLines, onLayout, expandTextStyle, ...rest } = this.props; let expandText = this.state.showExpandText?( <Text style={[this.props.style,styles.expandText,expandTextStyle]} onPress={this._onPressExpand.bind(this)}> {this.state.expandText}</Text> ) : null; return ( <View> <Text numberOfLines={this.state.numberOfLines} onLayout={this._onTextLayout.bind(this)} {...rest} > {this.props.children} </Text> {expandText} </View> ); } } const styles = StyleSheet.create({ expandText: { color:'blue', marginTop:0 } });
相關推薦
react native實現可展開Text控制元件
原理:元件初始化時不設定Text控制元件的numberOfLines屬性,測量一下元件高度(最大高度),然後在設定numberOfLines屬性,再次測量一下元件高度(最小高度),若最大高度大與最小高度,表示需要顯示“展開”。/* eslint new-cap: ["err
javascript/HTML實現多個text控制元件自動/動態計算總數
<html><head><title>untitled</title><style type="text/css"> input {width: 40px;} </style><script typ
React Native之Text控制元件屬性和樣式
屬性 numberOfLines 文字行數限制,新增後超過限制行數文字會在末尾預設以…的形式省略。 ellipsizeMode 設定文字縮略格式,配合numberOfLines使用,values: * tail:在末尾…省略(預設值) * c
基於React Native實現的介面載入元件react-native-loadview
react-native-loadview 基於React Native實現的介面載入元件, Installation npm install react-native-loadview --save Import into your project import
H5實現多圖片預覽上傳,可點選可拖拽控制元件介紹
在做圖片上傳時發現一個蠻好用的控制元件,支援多張圖片同時上傳,可以點選選擇圖片,也可以將圖片拖拽到上傳框直接上傳,方便,好用,介面也簡單,基本可以直接放到專案裡使用。 先看看他的樣式: 選擇圖片後
react-native實現樹結構選擇元件
react-native-tree-select react-native-tree-select 樹結構選擇元件 專案結構 --components: treeSelect元件 --treeSelectExample: 元件演示程式碼 --.gitignor
(二)React Native中View和Text元件的使用
前言 前段時間實在太忙,由於剛進公司,第一個專案要用混合開發,這種開發模式自己也沒用過,期間遇見過與h5的各種奇葩問題,並且Android這端都是由自己負責,經過兩個月的努力,公司專案終於上線。加之後面又回了一趟學校答辯,才把事情忙完了。這期間一直沒時間好好學
頁面中可拖拽控制元件的簡單實現方案
頁面中可拖拽控制元件的簡單實現,可直接一句話實現. 核心程式碼邏輯類如下: import android.animation.ObjectAnimator; import android.view.MotionEvent; import andr
React Native實現Text顯示...的效果
大家好,這裡我給大家講一些React native中的Text控制元件顯示省略號的實現方法。 專案開發中文字的顯示是必不可少的,比如產品簡介或描述,產品詳情等。往往會遇到文字過長的情況,一般怎麼處理這些問題呢? 大多數軟體都是將介面佈局中顯示不下的內容顯示為...,
Android開發之玩轉FlexboxLayout佈局(可用於普通控制元件實現流式佈局,也可結合RecycleView實現流式佈局)
在這之前,我曾認真的研究過鴻洋大神的Android 自定義ViewGroup 實戰篇 -> 實現FlowLayout,按照大神的思路寫出了一個流式佈局,所有的東西都是難者不會會者不難,當自己能自定義流式佈局的時候就會覺得這東西原來很簡單了。如果各位小夥伴也看過那篇
easyUI之可拖動控制元件——easyui-draggable
以上為元件的屬性,一下對屬性做實踐操作解釋: draggable提供可拖動控制元件 實現方式(js): 頁面定義: <div id="box" class="easyui-draggable" style="width:400px;height:200px;backgro
React-Native學習--輪播圖第三方元件-react-native-swiper
一.通過npm安裝react-native-swiper $ npm install react-native-swiper --save $ npm i react-timer-mixin --save 二.在專案中匯入 import Swiper from
微信小程式實現顯示和隱藏控制元件-頭像-取值-bindblur事件
微信小程式實現顯示和隱藏控制元件 .wxml: <view class=" {{showOrHidden?'show':'hidden'}}"></view> .wxss: .hidden { display: none; } .show { display: b
Tkinter-Text控制元件常用功能示例
簡介及簡例 Text 控制元件用來顯示多行文字. Tkinter 的 Text 控制元件很強大, 很靈活, 可以實現很多功能. 雖然這個控制元件的主要用途是顯示多行文字, 但其還可以被用作簡單的文字編輯器, 甚至是網頁瀏覽器. Text 控制元件可以顯示網頁連結, 圖片, HTML頁
類似footer的效果,利用簡單的佈局實現ListView底部懸浮控制元件
平時使用listview/recycleview的時候,都會經常碰到這麼一個需求:就是一個ListView下面懸浮一個佈局,當ListView的項超過螢幕下方則固定在底部。 一開也是想到用ListView的footer去實現,後來發現一個簡單的佈局實現這個功能。 看圖:
HTML5學習第6篇—video:自己實現video的播放控制元件(新增樣式版)
本篇部落格接著上一篇文章,實現了一個帶樣式的video播放控制元件,程式碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
HTML5學習第5篇—viedo:自己實現viedo的播放控制元件(簡版)
最近正在學習html5新增的媒體元素video,為了能夠更熟悉video的屬性、方法和事件,決定自己實現一下video的播放控制元件,因為是初學,只是寫了個簡版。程式碼如下: <!DOCTYPE html> <html lang="en
React Native實現再按一次退出應用程式功能
解決點選兩次手機back鍵退出程式 程式碼及註釋如下: //雙擊返回鍵退出程式
React-Native開發中的靈異元件-列表
靈異元件 眾所周知,列表是移動開發中非常常用的元件(控制元件)。原生的列表,拿iOS來來說,有UITableView & UICollectionview,就算是長列表的情況也只是載入速度慢,不會出現突然不再載入的情況,Android的應該也是這種情況。但是
react-native實現多張圖片上傳
最近在搞這個圖片上傳功能,,剛開始的時候iOS用的是 react-native-image-crop-picker這個外掛,,iOS那邊完美執行沒有毛病,,,但是到android這邊之後就開始報各種資源