一、Android API之TextView.BufferType代码演示
TextView.BufferType并不是TextView的内部类,是一个枚举类型,设置有三个枚举值,分别为NORMAL,EDITABLE,SPANNAABLE。
对于EDITABLE,多用于在保存数据持久化,而SPANNAABLE则用于设置如TextView,EditText对象里的局部属性设置。 而对于网络上关于EDITABLE之于NORMAL的差异,主要是说EDITABLE之后可以使用textview的append方法,有点类似String和StringBuffer的区别。但我在测试时发现,无论NORMAL还是EDITABLE,都可使用TextView的append方法。当然,我自身理解得也不透彻。对于EDITABLE数据持久化保存则使用了SharedPreferences,参考了Android的ApiDemos。
如下为代码范例:
(1)Activity类代码:
private TextView textView1,textView2,textView3;
private EditText editText1,editText2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//main.xml中定义的UI组件
textView1=(TextView)findViewById(R.id.textView1);
textView2=(TextView)findViewById(R.id.textView2);
textView3=(TextView)findViewById(R.id.textView3);
editText1=(EditText)findViewById(R.id.editText1);
editText2=(EditText)findViewById(R.id.editText2);
//设置textView1为TextView.BufferType.NORMAL
textView1.setText(textView1.getText(),TextView.BufferType.NORMAL);
textView1.append(" Append from textView1");
//设置textView2为TextView.BufferType.EDITABLE
textView2.setText(textView2.getText(), TextView.BufferType.EDITABLE);
textView2.append(" Append from textView2");
//设置textVIew3中Text内容的起始和终止需处理字符的索引位置
int start=(textView3.getText()).toString().indexOf('i');
int end=(textView3.getText()).toString().indexOf('V');
//设置textView3为TextView.BufferType.SPANNABLE
textView3.setText(R.string.textView3, TextView.BufferType.SPANNABLE);
Spannable span=(Spannable)textView3.getText();
span.setSpan(newBackgroundColorSpan(Color.BLUE), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span.setSpan(newStyleSpan(Typeface.BOLD_ITALIC),start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置editText1为TextView.BufferType.SPANNABLE
editText1.setText(editText1.getText(),TextView.BufferType.SPANNABLE);
Spannable span1=(Spannable)editText1.getText();
span1.setSpan(newBackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
//修改editText2内容后,将通过SharedPreferences保存,保证程序重启后数据持久存在
SharedPreferences prefs=getPreferences(0);
String restore=prefs.getString("text", null);
if(restore!=null){
//设置editText2为TextView.BufferType.EDITABLE
editText2.setText(restore,TextView.BufferType.EDITABLE);
intstart=prefs.getInt("start", -1);
intend=prefs.getInt("end", -1);
if(start !=-1 && end!=-1){
editText2.setSelection(start, end);
}
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
SharedPreferences.Editor editor=getPreferences(0).edit();
editor.putString("text", editText2.getText().toString());
editor.putInt("start", editText2.getSelectionStart());
editor.putInt("end", editText2.getSelectionEnd());
editor.commit();
}
(2)main.xml主要部分
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the TextView.BufferType-NORMAL"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the TextView.BufferType-EDITABLE"
/>
<TextView
android:id="@+id/textView3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the TextView.BufferType-SPANNABLE"
/>
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is EditText for TextView.BufferType-SPANNABLE"
android:freezesText="true">
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is EditText for TextView.BufferType-EDITABLE"
android:freezesText="true">
<requestFocus />
</EditText>
分享到:
相关推荐
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页...同时,合理使用HTML控件收集用户信息,确保用户体验的同时也要注重程序的安全性。这个压缩包"TextJSP"可能包含了实现上述功能的示例代码,供学习和参考。
"安卓控件运用"是一个针对初学者的专题,旨在深入理解并熟练运用各种安卓控件进行UI设计。在这个主题下,我们将探讨一些核心的安卓控件及其用法,同时也会涉及到基础的安卓开发概念。 首先,我们从基础控件开始。...
在本资源包中,“我收集的一些控件”显然包含了关于控件的集合,特别是针对ASP.NET平台的控件以及可能包含的一些图标资源。下面我们将深入探讨ASP.NET控件及其在Web开发中的应用,以及图标在用户界面设计中的重要性...
HTML控件是构建网页交互界面的基础,用于收集用户输入数据和提供用户操作界面。在创建Web系统的注册与登录页面时,HTML控件扮演着至关重要的角色。本实验旨在通过实践来熟悉这些控件的使用方法。 一、用户注册页面 ...
在Android应用开发中,控件是构建用户界面的基础元素,它们允许用户与应用程序进行交互。本章"Android简单控件的开发及应用"主要...在实际开发中,应根据项目需求灵活运用各种控件和布局,创造出符合用户需求的界面。
这些控件在网页设计中扮演着至关重要的角色,它们用于收集用户输入,提供选项选择,以及数据展示。 1. RadioButton(单选按钮):RadioButton控件用于为用户提供一组互斥的选择。在一个组内,用户只能选择一个...
此外,通过添加Label控件显示标题,TextBox控件收集管理员信息,Button控件处理注册请求,可以实现完整的用户交互流程。 对于其他控件,如RadioButton和RadioButtonList,它们用于实现单选选项;CheckBox和CheckBox...
这个名为"AndroidProject"的项目库提供了大量示例代码,帮助开发者深入理解并熟练运用Android控件。以下是一些关键控件及其使用方法的详细说明: 1. **Button(按钮)**:Button是Android中最基本的交互元素,用于...
列表控件在软件开发中是一种常见的用户界面元素,它用于展示多条有序的数据,并且通常支持用户进行交互操作,如浏览、添加、删除等。在本主题中,我们将深入探讨"列表控件的操作",主要关注如何实现通过点击“添加”...
1. 输入控件:如文本框(Text Box)、密码框(Password)、日期选择器(Date Picker)等,允许用户输入文本、数字或特定格式的数据。这些控件在表单中尤其常见,用于收集用户的个人信息或查询信息。 2. 按钮控件:...
总之,理解和熟练运用`TextBox`和`Panel`控件,对于构建高效且用户友好的C#应用程序至关重要。通过灵活地组合这些控件以及它们的属性、方法和事件,开发者可以创建出符合需求的丰富多样的用户界面。
在开发商业网站时,HTML 表单控件是构建用户交互界面的关键组成部分,尤其是对于登录、注册和其他数据收集功能。`<input>` 控件是 HTML 表单中最核心的...了解并熟练运用这些控件,是成为一名优秀的前端开发者的基础。
这意味着你可以将任何可视元素,包括Button、TextBlock或其他自定义控件,作为画刷来绘制背景或者其他图形元素。 二、为何需要检测VisualBrush 在某些高级的UI设计或动态主题应用中,可能需要知道哪些控件或元素的...
在本压缩包中,我们收集了一些关于Tab控件使用的实例,这些实例可以帮助开发者更好地理解和应用TabControl。 1. TabControl的基本结构 TabControl主要由两部分组成:标签页(TabPage)和内容区域。标签页显示在...
在C#编程中,TextBox控件是Windows Forms应用程序中常用的一种元素,用于用户输入文本。窗体(Form)则是应用程序...通过灵活运用控件属性、事件以及窗体方法,开发者能够创建出功能丰富的用户界面并实现与用户的交互。
表单控件是网页上用于收集用户输入的元素,如文本框、复选框、单选按钮、下拉列表等。在传统的HTML表单中,这些控件通常通过`name`属性来识别,并在提交表单时发送到服务器进行处理。然而,在现代Web开发中,我们...
在IT领域,尤其是在软件开发和用户界面设计中,控件如文本框(Text Box)和列表框(List Box)是构建交互式应用程序的关键元素。这些控件使得用户能够输入、查看和选择信息,从而实现人机之间的有效沟通。在本讨论中...
`Button1_Click`事件处理程序用于收集Footer模板中的数据,插入到数据源中,并刷新Gridview以显示新插入的记录。`CancelButton1_Click`事件处理程序则用于清除Footer模板中的输入数据。 ```csharp protected void...
在前端开发中,表单控件是不可或缺的一部分,它们用于收集用户数据并将其发送到服务器进行处理。本节我们将深入探讨五个主要的表单控件:文本输入框、密码字段、文本域、单选与多选、按钮以及下拉菜单,并了解如何...
在HTML中,表单是网页交互的核心元素,用于收集用户输入的数据。本篇教程主要讲解了HTML中的几个常见表单控件,包括单行文本...理解并熟练运用这些控件,可以提升网页的用户体验,并且在处理用户输入时更加高效和准确。