当前位置:首页 » 安卓系统 » androidspan

androidspan

发布时间: 2022-07-05 18:04:57

Ⅰ android textview 中取词,如何除标点符号 ClickableSpan

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,20);textView.setText(Html.fromHtml(str));答题不易,互相理解,您的采纳是我前进的动力,您也可以向我们团队发出请求,会有更专业的人来为您解答。

Ⅱ android 这个<span style="font-size: 14px;"></span>能写在类中吗求详解。

绝对不能写在类中,<span>是html中的一个标签,.java文件中确实是可以写的,但是绝对不是上面那样写的,只能写在javaDoc注解部分对一些信息设置提醒比如以下方式,生成javaDoc后就会有不同的效果。

/**
* <span style="font-size:14px" >更新实体</span>
*
* @param entity
* 实体
* @return 成功true,失败false
*/
public boolean update(T entity) throws CoreException;

Ⅲ android 这个错误大概什么意思 SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

editView1中text长度不能为零?

这个是EditText么?
不行就你不给它设置呗,或者 扔个“ ”长度为1的空串

Ⅳ 在android开发中,如何去除所有EditText中用setSpan()添加的文字颜色高亮

在开放的api里,没有setSpan()这个方法来设置文字的高亮。不知道是不是你自定义的。我觉得所谓的高亮,应该就是颜色的设置而已。能否把xml中对EditText的定义和代码中对EditText的设置的代码贴出来看看?

Ⅳ 如何实现一个 Android 端的富文本编辑器组件

在 Android 上实现富文本编辑器的思路大致分为三种:
使用多种 Layout 布局,每一种布局对应一种 HTML 格式,比如图片,比如顺序列表等。具体的实现例子可以参考这个链接。 Medium 和
Evernote 的富文本编辑就是采用这种方式实现的。总体来说比较复杂。
WebView + JavaScript 实现。现在 Web 端有很多成熟的 JavaScript 富文本编辑库,比如 Squire ,你只需要做好
WebView 和 JavaScript 的交互就可以了(多写回调函数)。理论上虽然是这么说,但是在实现过程你需要解决 WebView 的兼容性问题(
Android 4.4 及其以上版本和 4.4 以下版本的 WebView 内核不一样),以及其他一些不可预见的问题(比如就遇到无法粘贴文字的问题)。
EditText + Span 。 Android 的 TextView 原生支持诸如粗体、删除线、引用等 Span
,要实现简单的富文本编辑需求,可操作性还是比较大的。综合再三,选择了这种方式来实现自己的需求。
既然决定使用 EditText + Span 的方式来实现,必然要对相关的 API 有所了解。
首先来了解一下 Span 。Span 是一个强大的概念,有兴趣深入的同学推荐直接阅读这篇译文。
在这里主要使用两种类型的 Span :
继承自 CharacterStyle 的 Span ,比如 StyleSpan ,可以在字符级别上添加粗体,下划线等。
继承自 ParagraphStyle 的 Span ,比如 QuoteSpan ,可以为段落级别的文本添加引用。
接着需要一个可以将 Span 的效果设置进去的文本结构(即实现了 Spannable 接口), SpannableStringBuilder
是个不错的选择,同时 EditText 提供的 getEditableText() 方法也可以获得。通常只需要 getEditableText()
就可以了,但是在面对一些细节部分,可以使用 SpannableStringBuilder 预先设置相应的 Span ,再替换到原来的文本中。
设置 Span 的方式也很简单,需要调用 Spannable.setSpan(Object what, int start, int end, int
flags) 这个方法即可,方法中 4 个参数的解释如下:
Object what ,传入你使用的 Span 对象。
int start ,设置 Span 的开始位置。
int end ,设置 Span 的结束位置。
int flags ,代表设置 Span 的作用域。
在这里重点介绍一下 int flags 这个参数,它接受 4 种类型的参数,分别是:
Spanned.SPAN_INCLUSIVE_EXCLUSIVE ,表示你在设置 Span 的区域之前输入文字,输入的文字也会受到 Span
的影响。
Spanned.SPAN_INCLUSIVE_INCLUSIVE ,表示你在设置 Span 的区域前后输入文字,输入的文字都后受到 Span
的影响。
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ,表示你在设置 Span 的区域中出输入文字,输入的文字才会受到 Span
的影响。
Spanned.SPAN_EXCLUSIVE_INCLUSIVE ,表示你在设置 Span 的区域之后输入文字,输入的文字也会受到 Span
的影响。
“受到影响”的意思就是,仍然会保持你设置的 Span 的样式,比如选择Spanned.SPAN_EXCLUSIVE_INCLUSIVE
设置了一段文字的粗体,那么在这段文字后新输入的文字,也会是粗体。在这里推荐使用Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
参数,毕竟其他几种参数相对不是很好控制,而且会给使用的人带来的疑惑。认为一个操作代表的行为应当是准确没有歧义的。
好,到这里已经知道大致怎么作出一个富文本编辑器组件的样子了,无非是指定开始位置和结束位置,再设置相应的 Span
即可。至于设置的时候采取什么样的规则,你可以自己定制。但仅仅解决了编辑的问题,仍然存在导入的问题和导出的问题。
导入的问题十分简单, Android SDK 中提供了 Html.fromHtml() 这个方法,可以很轻松地将 HTML 字符串转换为所需的
Spanned 对象。但是需要注意的是, Html.fromHtml() 并不支持所有的 HTML 标签,比如无序列表就不支持,因此你需要自己实现
Html.TagHandler 接口来处理自己所需的标签,可以参考这个链接,实现了删除线和简单无序列表的支持。
面对粗体、斜体这样字符级别的样式, Html.fromHtml()
会自然而然的解析,该添加换行的地方就添加换行,并没有什么问题;但是面对引用、无序列表这样段落级别的样式,该方法会追加一个换行,也就是两个换行操作,相当于多出一个空行。通常来说认为一个
对应两个
,但是如果你有特别需求的话,也可以通过前面说的那样,自己来解析,而不是用系统默认的方式。
之前介绍了如何导入,想必你也十分清楚,必然有一个对应的Html.toHtml() 方法!没错,但是遗憾的是,这个方法也不全支持所有 Span
,比如列表就不支持。不过没有关系, Html.toHtml() 这个方法本身的源码简洁易懂,可以参考着实现。
在这里重点说明 Spannanle 的一个接口方法 nextSpanTransition(int start, int limit, Class
type) ,这个方法会在你指定的文本范围内,返回下一个你指定的 Span 类型的开始位置,依照这个方法,就可以逐层扫描指定的 Span
,而不用同时考虑其他类型的 Span 的影响,十分有用。
最后尽管说了这么多,导入导出还是有一个比较关键的问题,即导入的内容和导出的内容要保持一致,在这点上目前我还比较难以实现,只能说尽量控制吧,必要的时候还需要使用一下正则来处理导入导出的文本。

Ⅵ android中的spanned有什么用

String对象转Stringbuilder String a = "abc"; Stringbuilder ab = new Stringbuilder(a); Stringbuilder 转 String Stringbuilder ab = new Stringbuilder(“123123123”); String a = ab.toString();

Ⅶ android 中实现网页调用摄像头功能怎么实现

页面上做一个按钮,如打开摄像头,它做的事情就是将页面链接到一个特殊的串,如<a href=opencapture打开摄像头</a使用安卓的webview访问网页页面,同时重写shouldOverrideUrlLoading捕获url,当判断url为opencapture时,调用系统摄像头

Ⅷ android accessibilityservice 服务问题

利用Android辅助工具类AccessibilityService可以获取手机当前页面的信息,用户的操作事件等等.首先新建一个类继承AccessibilityService:[html] view plain

  • <spanstyle="font-family:TimesNewRoman;font-size:14px;">{

  • privatefinalStringTAG="MyAccessibilityService";

  • @Override

  • (AccessibilityEventevent){

  • inteventType=event.getEventType();

  • StringeventTypeName="";

  • switch(eventType){

  • caseAccessibilityEvent.TYPE_VIEW_CLICKED:

  • eventTypeName="TYPE_VIEW_CLICKED";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_FOCUSED:

  • eventTypeName="TYPE_VIEW_FOCUSED";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_LONG_CLICKED:

  • eventTypeName="TYPE_VIEW_LONG_CLICKED";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_SELECTED:

  • eventTypeName="TYPE_VIEW_SELECTED";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:

  • eventTypeName="TYPE_VIEW_TEXT_CHANGED";

  • break;

  • caseAccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:

  • eventTypeName="TYPE_WINDOW_STATE_CHANGED";

  • break;

  • caseAccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:

  • eventTypeName="TYPE_NOTIFICATION_STATE_CHANGED";

  • break;

  • caseAccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END:

  • eventTypeName="TYPE_TOUCH_EXPLORATION_GESTURE_END";

  • break;

  • caseAccessibilityEvent.TYPE_ANNOUNCEMENT:

  • eventTypeName="TYPE_ANNOUNCEMENT";

  • break;

  • caseAccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START:

  • eventTypeName="TYPE_TOUCH_EXPLORATION_GESTURE_START";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_HOVER_ENTER:

  • eventTypeName="TYPE_VIEW_HOVER_ENTER";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_HOVER_EXIT:

  • eventTypeName="TYPE_VIEW_HOVER_EXIT";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_SCROLLED:

  • eventTypeName="TYPE_VIEW_SCROLLED";

  • break;

  • caseAccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED:

  • eventTypeName="TYPE_VIEW_TEXT_SELECTION_CHANGED";

  • break;

  • caseAccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:

  • eventTypeName="TYPE_WINDOW_CONTENT_CHANGED";

  • break;

  • }

  • Log.i(TAG,"eventType:"+eventType);

  • Log.i(TAG,"eventTypeName:"+eventTypeName);

  • }

  • @Override

  • publicvoidonInterrupt(){

  • //TODOAuto-generatedmethodstub

  • }

  • }</span>

  • 然后新建一个xml配置文件来配置我们的MyAccessibility类:
  • accessibilityservice.xml :

    [html] view plain

  • <spanstyle="font-family:TimesNewRoman;font-size:14px;"><?xmlversion="1.0"encoding="utf-8"?>

  • <accessibility-servicexmlns:android="http://schemas.android.com/apk/res/android"

  • android:accessibilityEventTypes="typeAllMask"

  • android:accessibilityFeedbackType="feedbackGeneric"

  • android:accessibilityFlags="flagDefault"

  • android:canRetrieveWindowContent="true"

  • android:description="@string/app_name"

  • android:settingsActivity="com.example.xxx.android.accessibility.ServiceSettingsActivity"/></span>

  • android:accessibilityEventTypes="typeAllMask",相应所有的事件,就是MyAccessibility类中swich中的那些事件.
  • android:accessibilityFeedbackType="feedbackGeneric",手机用什么方式将信息反馈给用户,语音震动等等,这里默认;

    android:canRetrieveWindowContent="true",允许获取手机页面中的信息

    android:settingsActivity中com.example.xxx是你的应用的包名

    然后将这个xml配置文件配置到项目中:

    [html] view plain

  • <spanstyle="font-family:TimesNewRoman;font-size:14px;"><service

  • android:name="com.example.xxx.MyAccessibilityService"

  • android:enabled="true"

  • android:exported="true"

  • android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">

  • <intent-filter>

  • <actionandroid:name="android.accessibilityservice.AccessibilityService"/>

  • </intent-filter>

  • <meta-data

  • android:name="android.accessibilityservice"

  • android:resource="@xml/accessibilityservice"/>

  • </service></span>

  • 然后在我们手机的设置中的辅助功能里,打开这个辅助服务就可以了.
  • 利用这个类我们可以获取当前手机页面的信息,包括控件ID,控件值;当前类的名称以及用户的一些操作和手机状态的变化. 所以利用这些可以做手机自动安装软件,模拟点击,手机自动滑屏等.

    public void onAccessibilityEvent(AccessibilityEvent event){}

    通过这个event我们可以得到:

    event.getEventType()-当前事件的类型; event.getClassName()-当前类的名称; event.getSource()-当前页面中的节点信息,等等.更详细信查看官方API

    遍历获取窗口中所有的节点信息也可以用这个方法:

    [html] view plain

  • <spanstyle="font-family:TimesNewRoman;font-size:14px;">publicvoidgetInfo(){

  • AccessibilityNodeInfoinfo=getRootInActiveWindow();

  • if(info!=null){

  • if(info.getChildCount()==0){

  • Log.i(TAG,"控件名称:"+info.getClassName());

  • Log.i(TAG,"控件中的值:"+info.getText());

  • Log.i(TAG,"控件的ID:"+info.getViewIdResourceName());

  • Log.i(TAG,"点击是否出现弹窗:"+info.canOpenPopup());

  • }else{

  • for(inti=0;i<info.getChildCount();i++){

  • if(info.getChild(i)!=null){

  • recycle(info.getChild(i));

  • }

  • }

  • }

  • }

  • }</span>

  • 不过这个方法对当前的SDK版本有一定的要求,需要API level19及以上.

Ⅸ android EditText ClickableSpan响应事件问题

Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事.

热点内容
机械战警用什么配置好看 发布:2024-05-06 20:27:12 浏览:433
win10添加python环境变量 发布:2024-05-06 20:27:12 浏览:312
并联臂算法 发布:2024-05-06 20:02:11 浏览:621
cf跟dnf哪个需求配置高 发布:2024-05-06 20:01:23 浏览:655
什么配置皮筋能打老鼠吗 发布:2024-05-06 19:54:32 浏览:741
压缩机油压差报警 发布:2024-05-06 19:45:08 浏览:335
打游戏脚本好不好 发布:2024-05-06 19:44:00 浏览:234
七日杀如何转移服务器 发布:2024-05-06 19:43:04 浏览:428
唐plusdmi买哪个配置 发布:2024-05-06 19:36:48 浏览:147
汽车安卓屏开灯效果怎么弄 发布:2024-05-06 19:12:36 浏览:76