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

动易网站内容管理系统长沙做网站 青创互联

动易网站内容管理系统,长沙做网站 青创互联,衡水武邑县建设局网站,免费的建设网站软件下载点击文章中的一个单词,获取它。 通过点击的坐标y来获取行数,通过x坐标获取字符偏移量,向前遍历匹配,向后遍历匹配,匹配不成功则跳出循环。截取开始位置和最后位置的字符串。 主要代码 public String getSelectText…

点击文章中的一个单词,获取它。
在这里插入图片描述

通过点击的坐标y来获取行数,通过x坐标获取字符偏移量,向前遍历匹配,向后遍历匹配,匹配不成功则跳出循环。截取开始位置和最后位置的字符串。

主要代码

public String getSelectText(int currOff) {int leftOff = currOff, rigthOff = currOff;int length = getText().toString().length();while (true) { //左移currOffif (leftOff <= 0) {break;}if (leftOff != 0) {leftOff = leftOff - 1;if (leftOff < 0) {leftOff = 0;}}String selectText = getText().subSequence(leftOff, currOff).toString();if (!selectText.matches("^[()._0-9a-zA-Z'-]*")) {leftOff += 1;break;}}while (true) { //右移currOffif (rigthOff >= length) {break;}if (rigthOff != 0) {rigthOff = rigthOff + 1;if (rigthOff > length) {rigthOff = length;}}String selectText = getText().subSequence(currOff, rigthOff).toString();if (!selectText.matches("^[()_0-9a-zA-Z'-]*")) {rigthOff -= 1;break;}}String endString = "";try {endString = getText().subSequence(leftOff, rigthOff).toString();if (!endString.trim().isEmpty()) {Selection.setSelection((Spannable) getText(), leftOff, rigthOff);//选中Log.d("WordTextView", "setSelection");} else {Log.d("WordTextView", endString);}} catch (Exception e) {e.printStackTrace();}return endString.trim();}

全部代码

主要控件

public class WordTextView extends androidx.appcompat.widget.AppCompatTextView {private Callback callback;public WordTextView(Context context) {super(context);}public WordTextView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public WordTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}public Callback getCallback() {return callback;}public void setCallback(Callback callback) {this.callback = callback;}@SuppressLint("ClickableViewAccessibility")@Overridepublic boolean onTouchEvent(MotionEvent event) {super.onTouchEvent(event);Layout layout = getLayout();switch (event.getAction()) {case MotionEvent.ACTION_DOWN://                Selection.removeSelection(getEditableText());break;case MotionEvent.ACTION_HOVER_MOVE:break;case MotionEvent.ACTION_UP:int line = layout.getLineForVertical((int) event.getY());int off = layout.getOffsetForHorizontal(line, (int) event.getX());String selectText = getSelectText(off);if (selectText != null && callback != null) {callback.getWord(selectText);}Log.d("WordTextView1", off + "," + selectText);break;}return true;}public String getSelectText(int currOff) {int leftOff = currOff, rigthOff = currOff;int length = getText().toString().length();while (true) { //左移currOffif (leftOff <= 0) {break;}if (leftOff != 0) {leftOff = leftOff - 1;if (leftOff < 0) {leftOff = 0;}}String selectText = getText().subSequence(leftOff, currOff).toString();if (!selectText.matches("^[()._0-9a-zA-Z'-]*")) {leftOff += 1;break;}}while (true) { //右移currOffif (rigthOff >= length) {break;}if (rigthOff != 0) {rigthOff = rigthOff + 1;if (rigthOff > length) {rigthOff = length;}}String selectText = getText().subSequence(currOff, rigthOff).toString();if (!selectText.matches("^[()_0-9a-zA-Z'-]*")) {rigthOff -= 1;break;}}String endString = "";try {endString = getText().subSequence(leftOff, rigthOff).toString();if (!endString.trim().isEmpty()) {Selection.setSelection((Spannable) getText(), leftOff, rigthOff);//选中Log.d("WordTextView", "setSelection");} else {Log.d("WordTextView", endString);}} catch (Exception e) {e.printStackTrace();}return endString.trim();}public interface Callback {void getWord(String word);}
}

使用

 WordTextView main_wtv = findViewById(R.id.main_wtv);main_wtv.setText(content);TextView textView = findViewById(R.id.main_tv_word);main_wtv.setCallback(new WordTextView.Callback() {@Overridepublic void getWord(String word) {textView.setText(String.format("单词:%s", word));}});

布局

不要设置inputType,否则点击选词失效

 <com.jn.yyz.testone.WordTextViewandroid:id="@+id/main_wtv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:lineSpacingMultiplier="1.5"android:paddingStart="10dp"android:paddingEnd="10dp"android:text="Hello World!"android:textIsSelectable="true"android:textSize="18sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/main_tv_word" />
http://www.dtcms.com/wzjs/801582.html

相关文章:

  • 建立淘宝客网站永久免费国外vps无需信用卡
  • 烟台开发区做网站2019wordpress使用手册
  • 山东省建设厅网站电话查询商务网站建设服务商
  • 老电脑做网站服务器查看网站是什么空间
  • 珠海网站品牌设计公司简介游戏平台网站
  • 安阳网站公司哪家好工程建设举报网有哪些网站
  • 黄金路网站建设公司全国企业网查询
  • 织梦网站导航固定外贸网站推广怎么样
  • 榆林免费做网站公司网站手机版绑定域名
  • 网站多个页面要加引导开发者是什么职业
  • 闲鱼钓鱼网站怎么制作网站源码天堂
  • 如何做的网站手机可以用湘潭注册公司
  • 做网站一般图片的比例网络营销产品概念的五个层次
  • 珠海市建设局网站广东省建设厅信息网
  • 建设工程消防网站进入程序怎么做钓鱼网站生成
  • 开业时网站可以做哪些活动小程序商城开发华网天下优秀
  • 电子商务的网站案例长沙优化网站关键词
  • 做设计的网站定制创建国际网站
  • 怎样把网站上传到空间在线免费crm黑白配
  • 做网站 人工智能江门企业网站模板建站
  • 湖北省建设规划网站中企动力 网站模板
  • 建设网站时以什么为导向营销号视频生成器网页版
  • 网站备案号有什么用服务好的成都网站建设
  • 推荐几个网站漳州网站开发找出博大科技
  • 网站为什么吸引人网站速度打开慢的原因
  • 廊坊网站备案移动互联网推广
  • 做传销一般是不是有网站怎样做网站策划
  • 网站建设服务中企动力推荐杭州有哪些网络公司
  • 郑州网站推广公司ai做的比较好的网站
  • 展会网站源码快速搭建外贸网站