一、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>

更多相关文章

  1. android usb解析(一)UsbDeviceManager(and5.1)
  2. GrideView简单使用
  3. ActionBar使用
  4. Android(安卓)Action Bar学习(一)--基本介绍及使用
  5. Android群英传之Android绘图机制与处理技巧
  6. 如何不让EditText不获得焦点
  7. Android设置PreferenceCategory背景颜色的方法
  8. Android(安卓)ListView的多布局实现
  9. Android(安卓)Socket服务器 Servlet服务器

随机推荐

  1. Appium Windows 系统安装
  2. Android App Developers GUI Kits, Icons
  3. Android学习笔记——Android生命周期
  4. Android通过AES128加密解密字符串
  5. 将ffmpeg编译到android 源码
  6. Android中Context到底是什么以及用法
  7. 各Android版本WifiStateMachine状态机
  8. android 防止键盘弹出的简单方法
  9. Monkey
  10. Android 屏幕常亮