android TextView杂谈

来源:互联网 发布:cad软件闪退 编辑:程序博客网 时间:2024/05/16 05:14

上次看到老罗的视频教程,很有收获,今天将学到的东西总结一下。

一)响应TextView对应位置的点击事件(如123456中,对2345响应单击事件,对1,6点击没有效果)

           1) 首先在xml文件中定义一个TextView。

              <TextView
                             android:id="@+id/textview1"
                              android:layout_width="fill_parent"
                              android:layout_height="wrap_content"
                              android:autoLink="all"
                              android:textColor="@color/red"
                              android:textIsSelectable="false" />

            2)在activity中,我们定义一个TextView,通过findViewById函数,获取对应的textView1控件。

                    textView1=(TextView)findViewById(R.id.textview1);

                   view.setOnClickListener()函数只能对这个控件整体进行单机事件的监听,要达到对TextView中某段文字的单击事件的监听如下:

                   String str1="跳转到activity1";
                   SpannableString spanStr=new SpannableString(str1);//使用SpannableString
                   spanStr.setSpan(new ClickableSpan() {
                   @Override
                       public void onClick(View widget) {   
                       Intent intent=new Intent(MainActivity.this,Activity1.class);
                       startActivity(intent);
                  }
                  }, 0, str1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//new ClickableSpan实现对这个字符串的点击事件,第2.3个参数是设置开始字符和结束字符。
                  textView1.setText(str1);

二)传统的TextView只有在获得焦点的时候才会出现跑马灯效果,第二个想实现的就是在TextView没有获得焦点的时候也能实现跑马灯效果。当然网上的例子一大堆,呵呵。

        要实现这个功能,首先就要自定义控件继承自TextView,我命名为MarqueenText,然后重些isFocus和onFocusChanged函数。代码如下   

           @Override
               public boolean isFocused() {
               // TODO Auto-generated method stub
                return true;//返回值改成true
             }

         @Override
            protected void onFocusChanged(boolean focused, int direction,
            Rect previouslyFocusedRect) {
            // TODO Auto-generated method stub
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
           }//加上这个方法的作用是在TextView控件获得焦点和失去焦点的时候对跑马灯没有影响

  然后在xml文件中,引用自定义的控件。如下代码

              <com.yhj.mytextview1.MarqueenText
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:ellipsize="marquee"
                  android:marqueeRepeatLimit="marquee_forever"
                  android:id="@+id/textview5"
                  android:singleLine="true"
                  android:textIsSelectable="false"
                  android:layout_marginTop="20dp"/>

引用自定义的控件就是包名加自定义控件的类名:com.yhj.mytextview1.MarqueenText。就这样就能达到控件没有获得焦点也能达到跑马灯的效果。

 

            

 

原创粉丝点击