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

购物网站建设珠海深圳全网推广平台

购物网站建设珠海,深圳全网推广平台,网站创建域名,2345浏览器主页点击文章中的一个单词,获取它。 通过点击的坐标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/a/416314.html

相关文章:

  • 潍坊知名网站建设价格低静态网站模板源码下载
  • 网站什么开发类似于wordpress的网站
  • 用struts2框架做的网站运营推广策略有哪些
  • 网站代码上传后无法打开外链都没有的网站如何做排名的
  • 西宁做网站哪家好wordpress用户vip
  • 网站开发服务费会计处理网站建设及
  • 福州做网站设计外包ftp wordpress
  • vue项目引入字体
  • 网站建设如何就接入支付宝做本地团购网站怎么样
  • 网站建设及推广枣强最新公司注册流程
  • 网站建设免费模板下载一个app
  • dw做的网站怎么放到服务器上网站源码平台
  • 网站里面内外链接如何做安徽网络推广排名
  • 网站建设的建议例子网站优化就是搜索引擎优化
  • Termux 手动编译使用 ddclient 自动更新 ip 地址,从外网访问手机内部服务奶妈级教程
  • 社交网站第一步怎么做东莞网站开发网站建设制作费用
  • 大连seo网站管理做的最成功的网站
  • 个人网站名称怎么起asp本地网站无法打开
  • 建设购物网站要求佛山网站建设服务商
  • Linux 备份与恢复常用命令
  • 抚顺 网站建设文创产品设计理念
  • 乐之网站制作国家公示信息查询系统
  • 帝国cms 网站地图 xml手表之家
  • 【开题答辩全过程】以 spb+地铁安防管理系统的设计与实现为例,包含答辩的问题和答案
  • 软件工程实践第一次作业
  • 没网站怎么做app婚礼顾问网站介绍模版
  • 宣传类网站做企业网站怎样做
  • 百度上如何创建自己的网站有哪些下载软件的应用
  • Jetson Xavier NX踩坑
  • 建筑培训学校珠海网站推广优化