TextView基本学习

TextView如何产生丰富的文本。

显示文本


  1. 设置颜色和字体
  2. 设置大小号
  3. 设置小号
  4. 设置斜体,粗体
  5. 链接地址
  6. 插入图片
  • 使用实例

        String html = "我爱android
"; html += "新的测试

"; html += "百度"; CharSequence mychr = Html.fromHtml(html); tv1.setText(Html.fromHtml(html)); tv1.setMovementMethod(LinkMovementMethod.getInstance()); //点击的时候产生超链接。 String text = "我的url: http://www.sina.com\n"; text += "我的email: [email protected]\n"; text += "我的电话: 1868480621"; tv2.setText(text); tv2.setMovementMethod(LinkMovementMethod.getInstance());

   注意2个方法,一个是html格式的使用。Html.fromHtml(html)。
   一个是产生超链接,必须要在textview里设置一个属性 == android:autoLink="all" == 方能生效。  

显示表情和文本


显示图片的要点:

  1. 利用反射得到资源名
  2. imageget的使用
  • 使用实例

   public int getResoureId(String name) {
        try {
            //根据资源id的变量名获得Field对象,使用反射机制来实现
            Field field = R.drawable.class.getField(name);
            //取得并返回资源的id的字段(静态变量)
            return Integer.parseInt(field.get(null).toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    } 
        //------------------------------------
        String html = "图像1图像2";
        html += "图像3

图像4"; CharSequence text = Html.fromHtml(html, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { //获得系统资源的信息。 if (getResoureId(source) == 0) { Log.d("taxi", "erro"); return null; } Drawable drawable = getResources().getDrawable(getResoureId(source)); return drawable; } }, null); tvIcion.setText(text); tvIcion.setMovementMethod(LinkMovementMethod.getInstance());

关键是这2个方法的运用。

textview跳转activity(点击局部跳转)


关键以下4点:

  1. SpannableString的使用
  2. SpannableString.setSpan
  3. ClickableSpan()
  4. setMovementMethod(LinkMovementMethod.getInstance())的使用
  • 使用实例


        SpannableString mystring1 = new SpannableString(text1);
        SpannableString mystring2 = new SpannableString(text2);

        mystring1.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(context, TestA_Activity.class));
            }
        }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        mystring2.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Log.d("taxi", "点击了跳转");
            }
        }, text2.indexOf("activity"), text2.indexOf("activity") + "activity".length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        tv1.setText(mystring1);
        tv1.setMovementMethod(LinkMovementMethod.getInstance());

        tv2.setText(mystring2);
        tv2.setMovementMethod(LinkMovementMethod.getInstance());

点击事件的获取。

跑马灯效果


  在看代码前,先讲解一下等下会碰到的属性:

android:elipsize: 如果文本长度大于TextView的显示长度,则隐藏那一部分,可赋值为:none(不隐藏)、start(隐藏开始)、middle(隐藏中间)、end(隐藏结束)、marquee(滚动效果)。
android:marqueRepeatLimit:设定需要重复动画的次数,传递一个int值,-1为无限循环。
android:focusable:是否允许获得焦点,传递一个bool值。
android:focusableInTouchMode:是否在获得焦点时对控件有联系,传递一个bool值。

关键的就是这几个属性。
==tv_anim.setMovementMethod(LinkMovementMethod.getInstance());在代码中如果设置了这个属性,也会使跑马灯效果失效。==

你可能感兴趣的:(TextView基本学习)