使用TextView实现跑马灯的效果


activity_main.xml


1. <?xml version="1.0" encoding="utf-8"?>  
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
3. "http://schemas.android.com/tools"  
4. "match_parent"  
5. "match_parent"  
6. "vertical"  
7. "com.example.administrator.textviewdemo.MainActivity">  
8.   
9.     <TextView  
10. "match_parent"  
11. "wrap_content"  
12. "@+id/textview1"  
13. "true"  
14. "marquee"  
15. "marquee_forever"  
16. "true"  
17. "true"/>  
18.   
19. </LinearLayout>


MainActivity.java


[java]  view plain  copy


1.
      android:textStyle   
      设置字形[bold(粗体) 0, italic(斜体) 1,
      bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开  
      设置文本字体,必须是以下常量值之一:
      normal 0, 
      sans 1, 
      serif 2, 
      monospace(等宽字体) 3]
1. public class MainActivity extends AppCompatActivity {  
2.   
3. private TextView textView1;  
4. @Override  
5. protected void onCreate(Bundle savedInstanceState) {  
6. super.onCreate(savedInstanceState);  
7.         setContentView(R.layout.activity_main);  
8.         textView1 = (TextView) findViewById(R.id.textview1);  
9. //这种格式的话可以在滚动中点击进行链接  
10. "<big><a href='http://www.baidu.com'>百度一下</a></big>";  
11. "【珠海市公安局】遇到这些问题怎么破:一、骗子说网上有你的通缉令,公检法电话找你做笔录。二、物品遗失哪里可以发寻物启示?三、如何辨别谣言?微信关注“珠海公安”,不用你花一分钱的贴身安全秘书。";  
12. "<big><a href='http://www.baidu.com'>百度一下</a></big>";  
13.         CharSequence charSequence = Html.fromHtml(html);  
14.         textView1.setText(charSequence);  
15.         textView1.setMovementMethod(LinkMovementMethod.getInstance());  
16.   
17.     }  
18. }
  • 1
2.
   android:singleLine="true": 
   设置文本只显示一行,未显示的文本以  "..." 代替,不过该属性以过期,可以设置一下属性代替该效果。
      android:maxLines="1" :设置最大显示行数

3.
    android:ellipsize="middle": 设置以“...”代替省略内容的位置
    ”start”—–省略号显示在开头;
    ”end”——省略号显示在结尾;
    ”middle”—-省略号显示在中间;
    ”marquee” ——以跑马灯的方式显示(动画横向移动)



4.
      android:focusable=“true”:
      设置是否获得焦点。若有requestFocus()被调用时,后者优先处理。注意在表单中想设置某一个如EditText获取焦点,光设置这个是不行的,
在Touch模式下获取焦点需要设置focusableInTouchMode为true。



5.
      android:drawableBottom 
      在text的下方输出一个drawable,
      并且同时和background使用时覆盖后者。  
      android:drawableLeft  
      在text的左边输出一个drawable,  
      android:drawablePadding 
      设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。  
     android:drawableRight   
       在text的右边输出一个drawable,如图片。  
     android:drawableTop
     在text的正上方输出一个drawable,

6.
    android:scrollHorizontally="true"
    设置文本滚动显示
    android:marqueeRepeatLimit: 设置滚动次数
  • 1
  • 2
  • 3
  • 4

8.
    Android中设置阴影也比较简单,xml中可以这样设置:
    android:shadowColor //指定文本阴影的颜色
    android:shadowDx //设置阴影横向坐标开始位置
    android:shadowDy //设置阴影纵向坐标开始位置
    android:shadowRadius //设置阴影的半径。设置为0.1会变成字体的颜色
7.
    android:autoLink:设置超链接
    默认为none:
    Linkify.WEB_URLS,
    Linkify.EMAIL_ADDRESSES,
    Linkify.PHONE_NUMBERS,
    Linkify.MAP_ADDRESSES,Linkify.ALL



9.
    android:bufferType  
    选项editable 类似于StringBuilder可追加字符,  
    也就是说getText后可调用append方法设置文本内容。
    spannable 则可在给定的字符区域使用样式,



10.
    android:editable    设置是否可编辑。



11.
      android:maxEms  
      设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。  
     android:minEms  
     设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。  
     android:maxLength   
     限制显示的文本长度,超出部分不显示。



12.
    android:lineSpacingExtra    设置行间距。  
    android:lineSpacingMultiplier   设置行间距的倍数。如”1.2”




TextView应用

1.有时候有这样的需求,TextView中个别字符是不确定的,例如,你好XX,欢迎使用我们的XX:App!  在运行时才确定,我们可以这样做:
在string.xml资源文件中定义要显示的文本,对于不确定的字符用占位符占据,然后再替换掉:



//资源文件中:
        <string  name="welcome">你好%1$s,欢迎使用我们的%2$s:App!</string>



//将striing 资源文件中的占位符代替掉
String welcome=getString(R.string.welcome,"小丸子","智能"); textView.setText(welcome);




2.有时 TextView的文本我们需要部分字符有不同的样式,而设置TextView 的样式属性都是对全部文本而言,这时我们就需要用到android.text 命名空间下的一些与Spannable相关的类和接口 
   在Activity中首先创建一个Spannable接口的实现类:

     其参数CharSequence ,String是它的子类,其实这里也就是我们要设置         在TextView的文本内容

    这里要用到Span,各种的Span就是通过SpannableString来封装样的,设置完Span之后需要将Span放入到SpannableString类中,然后SpannableString设置到
TextView中去。

    把Span放入到SpannableString用到这个方法:

spannableString.setSpan(Object what,int start,int end,int flags);
  其参数:what 是Object类型 肯定是span对象,star就是我们要操作的文字的起始下标,end是结束的下标。


  flag:

  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含start和end所在的端点 (star,end) 
  Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端点(star,end] 
  Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含start,但不包含end所在的端点 [star,end) 
  Spanned.SPAN_INCLUSIVE_INCLUSIVE---      包含start和end所在的端点 [star,end]



下面来看代码:

Spannable textSpan=new SpannableStringBuilder("使用该软件,即表示您同意该软件的使用条款和隐私政策");
        // 给“使用条款”设置下划线
        textSpan.setSpan(new UnderlineSpan(), 16, 20,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 给“使用条款”设置文字的单击事件
        textSpan.setSpan(new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, UsageActivity.class));
                Log.d(TAG, "onClick: 使用条款被点击了!");            }
        }, 16, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 给“使用条款”设置文字的前景色
        textSpan.setSpan(new ForegroundColorSpan(Color.GREEN), 16, 20,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

      // 给“隐私政策”设置下划线
        textSpan.setSpan(new UnderlineSpan(), 21, 25,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 给“隐私政策”设置文字的单击事件
        textSpan.setSpan(new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                startActivity(new Intent(MainActivity.this, UsageActivity.class));

            }
        }, 21, 25, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 给“隐私政策”设置文字的前景色
        textSpan.setSpan(new ForegroundColorSpan(Color.RED), 21, 25,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        //SpannableString设置到 TextView中去。
        textView2.setText(textSpan);

Android获取view的大小和位置 android 获取textview的值_Android


3. 插入图片还可以用html字符串来实现。不过需要用到ImageGetter类来对图片的src属性进行转换:
String imgStr = "<b>大圣归来</b><br><img src=\"" + R.mipmap.dasheng + "\"/>";

        Html.ImageGetter imageGetter = new Html.ImageGetter(){
            @Override
            public Drawable getDrawable(String source) {
                int id=Integer.parseInt(source);
                Drawable drawable = getResources().getDrawable(id);
                drawable .setBounds(100, 100, 300, 600);
                return drawable ;
            }
        };

       textView2.append(Html.fromHtml(imgStr,imageGetter,null));



Android获取view的大小和位置 android 获取textview的值_TextView 跑马灯_02

4.// Android支持html格式的字符串, 
// 通过调用Html.fromHtml(str)方法可以转换html格式的字符串str。 
String textStr1 = “如果有一天,“; 
String textStr2 = “我悄然离去“; 
textView2.setText(Html.fromHtml(textStr1 + textStr2));

// Android支持html格式的字符串,
  // 通过调用Html.fromHtml(str)方法可以转换html格式的字符串str。
    String textStr1 = "<font color=\"#123569\">如果有一天,</font><br/>";
   String textStr2 = "<font color=\"#00ff00\">我悄然离去</font>";
    textView2.setText(Html.fromHtml(textStr1 + textStr2));