隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          《Android/OPhone開發完全講義》連載(6):為TextView組件加上邊框

          本文為原創,如需轉載,請注明作者和出處,謝謝!

          《Android/OPhone 開發完全講義》目前計算機類銷售總排名:互動網(china-pub)第3名,當當網新書熱賣榜銷售總排名第4名

          本文為新書《Android/OPhone 開發完全講義》的內容連載。《Android/OPhone開發完全講義》一書現已出版,敬請關注。

          購 買:

          互動網(china- pub)
          當 當(dangdang)
          卓越亞馬遜

          《Android/OPhone 開發完全講義》目錄

          源代碼下載




          上一篇:Notification 與狀態欄信息

          Android系統本身提供的TextView組件并不支持邊框,但可以對TextView進行擴展來添加邊框。我們可以使用如下兩種方法為TextView組件添加邊框。

          1.  編寫一個繼承TextView類的自定義組件,并在onDraw事件方法中畫邊框。

          2.  使用9-patch格式的圖像作為TextView的背景圖來設置邊框(這個背景圖需要帶一個邊框)。

          onDraw事件方法中畫邊框非常容易,只需要畫TextView組件的上、下、左、右四個邊即可。這個自定義組件的代碼如下:

          package net.blogjava.mobile;

          import android.content.Context;
          import android.graphics.Canvas;
          import android.graphics.Paint;
          import android.util.AttributeSet;
          import android.widget.TextView;

          public class BorderTextView extends TextView
          {
              @Override
              
          protected void onDraw(Canvas canvas)
              {
                  
          super.onDraw(canvas);
                  Paint paint 
          = new Paint();
                  
          //  將邊框設為黑色
                  paint.setColor(android.graphics.Color.BLACK);
                  
          //  畫TextView的4個邊
                  canvas.drawLine(00this.getWidth() - 10, paint);
                  canvas.drawLine(
          000this.getHeight() - 1, paint);
                  canvas.drawLine(
          this.getWidth() - 10this.getWidth() - 1this.getHeight() - 1, paint);
                  canvas.drawLine(
          0this.getHeight() - 1this.getWidth() - 1this.getHeight() - 1, paint);
              }
              
          public BorderTextView(Context context, AttributeSet attrs)
              {
                  
          super(context, attrs);
              }
          }

          在上面的代碼中將邊框設成了黑色,讀者也可以根據需要將邊框設置成任何的顏色,或從XML布局文件中讀取相應的顏色值,關于自定義組件的詳細介紹請讀者參閱4.2的內容。

          雖然可以直接使用帶邊框的圖像作為TextView組件的背景來設置邊框,但當TextView的大小變化時,背景圖像上的邊框也隨之變粗或變細,這樣看起來并不太舒服。為了解決這個問題,可以采用9-patch格式的圖像來作為TextView組件的背景圖。我們可以使用<Android SDK安裝目錄>\tools\draw9patch.bat命令來啟動“Draw 9-patch”工具。制作9-patch格式的圖像也很簡單,將事先做好的帶邊框的png圖像(必須是png格式的圖像)用這個工具打開,并在外邊框的上方和左側畫一個象素點,然后保存即可,如圖1所示。9-patch格式的圖像必須以9.png結尾,例如,abc.9.png。在生成完9-patch格式的圖像后,使用<TextView>標簽的android:background屬性指定相應的圖像資源即可。

                                       圖1

          運行本例后,顯示的效果如圖2所示。

           


                         圖2

          注意:如果想讓TextView透明,也就是將TextView的父視圖的背景色作為TextView組件的背景色,如圖2所示的第3TextView組件,需要制作帶邊框的透明png圖像(除了邊框,圖像的其他部分都是透明的),然后再生成9-patch格式的圖像。







          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2010-07-15 10:37 銀河使者 閱讀(2900) 評論(0)  編輯  收藏 所屬分類: 原創移動(mobile)Android/OPhone

          主站蜘蛛池模板: 海南省| 栖霞市| 海城市| 桐梓县| 内江市| 卫辉市| 西青区| 淮北市| 白河县| 拜泉县| 咸丰县| 昌都县| 土默特右旗| 康定县| 谢通门县| 巴林左旗| 乌苏市| 军事| 富平县| 台南市| 谢通门县| 白玉县| 河南省| 黄浦区| 中西区| 荆门市| 三门县| 新平| 宜兰市| 兰考县| 白城市| 澄迈县| 崇礼县| 南乐县| 盘山县| 襄樊市| 太白县| 汾西县| 铅山县| 潢川县| 凌云县|