1、TextView控件的主要作用:顯示文本信息
2、語法:
<TextView
android:id="@+id/tv_show"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
3、屬性:
android:id 控件唯一標識
android:text 顯示的文本信息
android:layout_width 控件寬度
android:layout_height 控件高度
4、layout_width & layout_weight 的屬性值
1)可設置固定的值:100dp
2)可根據內容動態變化:wrap_content
3)可適配父佈局的寬和高:match_parent Android 2.3 版本以後
fill_parent Android 2.3 版本以前
5、Android 中的度量單位
dp | dip :設備獨立像素,與像素密度密切相關,可以根據屏幕密度自行轉換
sp :與縮放無關的抽象元素,主要用於字體顯示
px :像素,表示屏幕上物理像素點。在畫表格線、陰影線類似的情況下建議使用,其他情況不建議使用。
6、關於dp 和dpi 的補充知識
dpi (像素密度) Dots Per Inch (每英寸所打印的點數)
其中每英寸指的是一維的一條線,而不是一英寸乘以一英寸的平面。
標準屏幕dpi :160 (1英寸上有160個點)
dp 在標準dpi的前提下,1個像素點的長度:1dp =1 px
在dpi =320 的前提下:1dp = 2px
最終圖像信息的顯示,是要換算成像素的,可以把dp理解爲一種換算關係。
使用dp的好處在於:不同的dpi屏幕看起來長度一樣。
而使用px作爲單位:dpi越高的屏幕,看起來越短。
深層次理解:假設同樣是1mm的屏幕,dpi 越高的手機,1mm所容納的像素點越多。
以dpi=160 與 dpi = 320爲例。 dpi =160的情況下,假定1mm = 1px , 那麼 dpi=320的情況下,1mm = 2px。
使用dp作爲單位的話,dpi=160的手機上,可能顯示2個像素點,
那麼在dpi=320的手機上,就會顯示4個點,最終2個手機顯示的長度都是一樣的。
深層次擴展:圖像的最終顯示還是以px作爲單位的,而dp只是一個換算的橋樑。
假定同樣分辨率,相同dpi 的手機與TV比起來,手機的尺寸是5寸,而TV可能是24寸。
這樣的話,我們用dp作爲單位,假定手機顯示全屏一條線,
不可能TV上只是顯示手機寬度的一條線。
那麼,我們上述的概念就完全被推翻。
原因就是最終顯示的時候還是以像素作爲單位的,
在dpi相同的前提下,dp對應的px也是一個固定數。
而手機跟TV上比起來,1px的大小肯定不一樣。
我們可以這樣理解:相同dp下,顯示的圖像大小,對於整個屏幕來講,比例是絕對的。
7、Android中資源文件的引用
@+id :在R.java中添加一個新的資源id,此外還有@id,表示引用現有的id資源。
@string:@string/helo_word表示引用name爲“hello_world”的string標籤的字符串。
常用的資源標籤類型:
string 字符串
color 顏色
style 樣式
dimen 尺寸
8、新建xml文件,假定新建colors.xml 以及顏色的定義及調用。
右鍵res/values,選擇new——XML——Values XML File。命名爲colors
color標籤:<color name="red">#FF0000</color>
擴展:若RGB顏色的每2位組合相同,則可以簡寫爲一個字符。
比如紅色可以寫成#FF0000,也可以寫成#F00,不區分大小寫。
調用顏色:<android:textColor:"@color/red">
9、源代碼中直接寫常量,自動生成到XML文件中。
在TextView中輸入代碼:
android:textSize="18sp"
按下alt+enter 出現黃色燈泡,說明源碼可改進。
點擊“Extract dimension resource” 彈出的對話框中輸入變量名稱“title” 其他默認。
則會在res\values\dimens.xml\dimens.xml文件中自動添加
<dimen name="title">18sp</dimen>
並且源代碼中 android:textSize="18sp" 會自動變成
android:textSize="@dimen/title"
10、TextView獨特的屬性。
android:lines="7" 設置TextView顯示的行數。
android:maxWidth="40dp" 設置TextView顯示的最大寬度。
android:singleLine=“true” 強制TextView單行顯示。取值只有ture 或者 false
當文本內容過多的時候,文字會自動換行,影響後續佈局。比如顯示
“當文本內容過多的時候,文字
會自動換行”
強制換行以後,則顯示“當文本內容過多的時候,文...”
android:ellipsize="end" 強制單行顯示的格式。
end 表示最後不顯示的文字以“...”顯示
start 表示開頭不顯示的文字以“...”顯示
middle 表示中間不顯示的文字以"..."顯示
none 表示最後不顯示的文字直接不顯示,不出現“...”
marquee 表示所有文字以跑馬燈的形式滾動顯示。
如果選擇的是marquee值,預覽看不出效果,必須在虛擬機或者真機測試。
直接虛擬機測試還是看不出效果:原因是android中,textview控件必須聚焦。
android:focusable="true" 使textview控件可聚焦。其取值爲 true,false
android:focusableInTouchMode="true" 在觸摸的情況下,使得textview聚焦。取值爲true,false
11、跑馬燈效果的最低要求。
android:singleLine=“true”
android:ellipsize=“marquee”
android:focusable="true"
android:focusableInTouchMode="true"