1. 程式人生 > >Android TextView(一)——常用屬性簡介

Android TextView(一)——常用屬性簡介

TextView ——常用屬性簡介

  1.
      android:textStyle   
      設定字形[bold(粗體) 0, italic(斜體) 1,
      bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開  
      設定文字字型,必須是以下常量值之一:
      normal 0, 
      sans 1, 
      serif 2, 
      monospace(等寬字型) 3]   
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:drawableBottomtext的下方輸出一個drawable,
      並且同時和background使用時覆蓋後者。  
      android:drawableLefttext的左邊輸出一個drawableandroid:drawablePadding 
      設定textdrawable(圖片)的間隔,與drawableLeftdrawableRightdrawableTopdrawableBottom一起使用,可設定為負數,單獨使用沒有效果。  
     android
:drawableRighttext的右邊輸出一個drawable,如圖片。 android:drawableToptext的正上方輸出一個drawable
6.
    android:scrollHorizontally="true"
    設定文字滾動顯示
    android:marqueeRepeatLimit: 設定滾動次數
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);

這裡寫圖片描述

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

這裡寫圖片描述

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

這裡寫圖片描述