加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Android API之TextView.BufferType代码演示

(2010-10-30 19:24:36)
标签:

android

it

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);

     

      //设置textView1TextView.BufferType.NORMAL

      textView1.setText(textView1.getText(),TextView.BufferType.NORMAL);

      textView1.append("  Append from textView1");

     

      //设置textView2TextView.BufferType.EDITABLE  

      textView2.setText(textView2.getText(), TextView.BufferType.EDITABLE);

      textView2.append("  Append from textView2");

     

      //设置textVIew3Text内容的起始和终止需处理字符的索引位置

      int start=(textView3.getText()).toString().indexOf('i');

      int end=(textView3.getText()).toString().indexOf('V');

     

     //设置textView3TextView.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);

     

      //设置editText1TextView.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){

          

           //设置editText2TextView.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>


(3)效果截图
http://s3/middle/407abb0dh93d403bdcbd2&690API之TextView.BufferType代码演示" TITLE="Android API之TextView.BufferType代码演示" />


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有