`
我爱3G
  • 浏览: 29508 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Text控件运用小收集

阅读更多
一、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>

分享到:
评论

相关推荐

    asp.net知识库

    ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

Global site tag (gtag.js) - Google Analytics