Welcome 微信登录

首页 / 操作系统 / Linux / 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();    }