【Android】03、TextView控件及屬性

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"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章