TextView

基礎(chǔ)屬性

<TextView
            android:gravity="right"                   設(shè)置文本顯示位置(居右)
            android:padding="5dp"                     設(shè)置內(nèi)部間距
            android:text="忘記密碼寥掐?"                  設(shè)置文本
            android:textColor="@color/basic_gray1"    設(shè)置字體顏色
            android:textSize="12sp"                   設(shè)置字體大小
            android:textStyle=""                      設(shè)置字體風(fēng)格,三個可選值:normal(無效果)百炬,bold(加粗),italic(斜體)
/>

設(shè)置字間距和行間距

字間距:

android:textScaleX:控制字體水平方向的縮放庶弃,默認值1.0f歇攻,值是float
Java中setScaleX(2.0f); 

行間距: Android系統(tǒng)中TextView默認顯示中文時會比較緊湊缴守,為了讓每行保持行間距

android:lineSpacingExtra:設(shè)置行間距屡穗,如"3dp" 

android:lineSpacingMultiplier:設(shè)置行間距的倍數(shù)村砂,如"1.2"

Java代碼中可以通過: setLineSpacing方法來設(shè)置

自動換行

自動換行通過 android:singleLine 設(shè)置屹逛,默認為 false罕模。

如需要自動換行,可以用:

android:singleLine = "false"

如果要在一行顯示完歇僧,不換行,可以用:

android:singleLine = "true"

除此之外兽埃,可以也設(shè)置多行顯示不完柄错,添加個maxLines的屬性即可

android:maxLines = "3"

省略號和跑馬燈形式

TextView及其子類,當字符內(nèi)容太長顯示不下時可以省略號代替未顯示的字符疫萤;省略號可以在顯示區(qū)域的起始扯饶,中間尾序,結(jié)束位置每币,或者以跑馬燈的方式顯示文字(textview的狀態(tài)為被選中)兰怠。 注意:要和android:maxLines="1"一起用

        android:ellipsize="start"        省略號在開頭        
        android:ellipsize="middle"       省略號在中間        
        android:ellipsize="end"          省略號在結(jié)尾        
        android:ellipsize="marquee"      跑馬燈顯示

       或者在程序中可通過setEillpsize顯式設(shè)置痕慢。
       注: EditText不支持marquee這種模式掖举。

帶圖片(drawableXxx)的TextView

img

設(shè)置圖片的核心其實就是:drawableXxx;可以設(shè)置四個方向的圖片:
drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右) 另外,你也可以使用drawablePadding來設(shè)置圖片與文字間的間距!

<TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_centerInParent="true"  
        android:drawableTop="@drawable/show1"  
        android:drawableLeft="@drawable/show1"  
        android:drawableRight="@drawable/show1"  
        android:drawableBottom="@drawable/show1"  
        android:drawablePadding="10dp"  
        android:text="哈哈" />  

代碼設(shè)置圖片
setCompoundDrawables與setCompoundDrawablesWithIntrinsicBounds的區(qū)別
setCompoundDrawablesWithIntrinsicBounds(設(shè)置原圖)
setCompoundDrawables(可以調(diào)整圖片大欣骸)
例1:

public class MainActivity extends Activity {  
    private TextView txtZQD;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        txtZQD = (TextView) findViewById(R.id.txtZQD);  
        Drawable[] drawable = txtZQD.getCompoundDrawables();  
        // 數(shù)組下表0~3,依次是:左上右下  
        drawable[2].setBounds(0, 0, 40, 40);  
        txtZQD.setCompoundDrawables(drawable[0], drawable[1], drawable[2],  
                drawable[3]);  
    }  
} 

例2:

        mNextButton=(Button)findViewById(R.id.next_button);
        Drawable drawable=getResources().getDrawable(R.drawable.im14);
        drawable.setBounds(0,0,width,height);//必須設(shè)置,否則無效
        mNextButton.setCompoundDrawables(null,null,drawable,null);
        //width即為你需要設(shè)置的圖片寬度汁掠,height即為你設(shè)置的圖片的高度

例3:
根據(jù)系統(tǒng)語言設(shè)置圖標位置

//根據(jù)系統(tǒng)語言設(shè)置圖標的顯示位置
        String language = Locale.getDefault().getLanguage();
        if (language.equals("ar") || language.equals("fa")) {
            //如果是從右到左閱讀的語言(阿拉伯等)
            Drawable drawable = getResources().getDrawable(R.drawable.edit);
            drawable.setBounds(0, 0, drawable.getMinimumWidth()/2, drawable.getMinimumHeight()/2);
            tv_sign.setCompoundDrawables(drawable, null, null, null);//設(shè)置textView四個方向上的圖片
            tv_sign.setCompoundDrawablePadding(5);//間距
        } else {
            //從左到右
            Drawable drawable = getResources().getDrawable(R.drawable.edit);
            drawable.setBounds(0, 0, drawable.getMinimumWidth()/2, drawable.getMinimumHeight()/2);
            tv_sign.setCompoundDrawables(null, null, drawable, null);
            tv_sign.setCompoundDrawablePadding(5);
        }

實現(xiàn)跑馬燈效果的TextView

img

代碼實現(xiàn):

    <TextView
            android:id="@+id/txtOne"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:text="你整天說著日了狗日了狗,但是你卻沒有來秽之,呵呵呵呵呵呵呵呵呵呵~"/>

各種Span設(shè)置

Android 一個TextView中設(shè)置文字不同字體大小和顏色的最完整方法
將TextView的字體設(shè)置為大小不一
android 一個 textview 設(shè)置不同的字體大小和顏色
步驟如下:

  1.定義不同style .

不妨如下定義2個style

    <style name="style0">
        <item name="android:textSize">19dip</item>
        <item name="android:textColor">@color/color1</item>
    </style>
    
    <style name="style1">
        <item name="android:textSize">23dip</item>
        <item name="android:textColor">@color/color2</item>
        <item name="android:textStyle">italic</item>
    </style>

2 . 通過SpannableString 設(shè)置字符串格式跨细。代碼如下:

mTextView = (TextView)findViewById(R.id.test);
         SpannableString styledText = new SpannableString("親愛的小寶扼鞋,你好");
         styledText.setSpan(new TextAppearanceSpan(this, R.style.style0), 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         styledText.setSpan(new TextAppearanceSpan(this, R.style.style1), 3, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        mTextView.setText(styledText, TextView.BufferType.SPANNABLE);

使用autoLink屬性識別鏈接類型

img

為TextView設(shè)置兩種狀態(tài)淫半,程序中可以動態(tài)切換

為TextView設(shè)置兩種狀態(tài)科吭,程序中可以動態(tài)切換

經(jīng)常會需要用文字的兩種狀態(tài)來表示當前系統(tǒng)的某兩種狀態(tài)。比如:

image

這里的第一個TextView和后兩個TextView就表示了兩種狀態(tài)猴鲫。我們可以在程序的動態(tài)的切換狀態(tài)(而不是直接修改顏色)

可以利用TextView的enable屬性實現(xiàn):

在res中建立一個color文件夾对人,在其中新建一個xml(xxx.xml):

<selector xmlns:android=*"http://schemas.android.com/apk/res/android"* >

<item android:state_enable=*"false" android:color*=*"@color/white"></item>*

<item android:color=*"@color/login_footerbutton_n"></item>*

</selector>

TextView的屬性加一條:

android:textColor=*"@color/xxx"*

TextView的enable的屬性默認為true。

在程序中設(shè)置TextView的狀態(tài):

tabTextView.setEnabled(**false**);

換行后居中顯示

android自定義換行居中CenterTextView
TextView換行居中拂共,每行居中顯示

常見問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宜狐,隨后出現(xiàn)的幾起案子势告,更是在濱河造成了極大的恐慌,老刑警劉巖抚恒,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咱台,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門厘熟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阔挠,“玉大人谴仙,你說我怎么就攤上這事×瓒ⅲ” “怎么了县忌?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么怨喘? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮驻售,結(jié)果婚禮上壳快,老公的妹妹穿的比我還像新娘竖伯。我一直安慰自己打厘,他們只是感情好莽鸭,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布巧号。 她就那樣靜靜地躺著,像睡著了一般掺涛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上区丑,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音,去河邊找鬼穗酥。 笑死砾跃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的草丧。 我是一名探鬼主播昌执,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼娶桦,長吁一口氣:“原來是場噩夢啊……” “哼祈争!你這毒婦竟也來了邢疙?” 一聲冷哼從身側(cè)響起另绩,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤儒陨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后板熊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體框全,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年干签,在試婚紗的時候發(fā)現(xiàn)自己被綠了津辩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡容劳,死狀恐怖喘沿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竭贩,我是刑警寧澤蚜印,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站留量,受9級特大地震影響窄赋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜楼熄,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一忆绰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧可岂,春花似錦错敢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至平斩,卻和暖如春亚享,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绘面。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工欺税, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糜芳,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓魄衅,卻偏偏與公主長得像峭竣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晃虫,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容