1.嵌套一層,利用內容的margin或者padding的留白加容器的背景來實現邊框效果。
其實這個道理很簡單,很早的時候那時候我們還用table做html頁面配置的時候,我們就是使用cellspacing來實現table的邊框的。現在我們也利用同樣的想法來實現。
其中padding產生留白,就形成類似邊框的效果。
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2px" android:background="#f00"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello world!" android:background="#000"></TextView></LinearLayout>
當然內部的容器也是需要有顏色的,如果想實現內部透明的效果則需要將內部View的背景色跟背景的顏色保持一致,這是不太方便的地方。
2.使用9-patch(九宮格)的背景圖片來實現邊框效果。
做一個有邊框的9-patch圖片,作為要有邊框的View的背景圖即可。這樣你還可以控制哪邊有邊框,哪邊無邊框,這種方法是比較好的一種方法,而且沒有多餘的View嵌套。另外你還可以實現圓角邊框等效果。
如果你還不瞭解關於9-patch的內容,請移步。你需要做一個有邊框的png圖片,使用sdk的tools檔案夾下的draw9patch.bat工具,你可以輕鬆產生9-patch圖片。工具用起來很簡單。左側和頂部的線用於擴充重複顯示的內容,右側和底部的線用於控制內容顯示的位置。在這裡我要先感謝國家,我們現在已經可以自由的訪問Android開發人員網站。
3.利用shape的stroke來實現邊框效果。
當然你可以使用shape中的stroke來實現border的效果。
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="1dp" android:color="#f00" /></shape>
然後你可以引用這個shape作為背景就可以實現邊框效果。關於更多關於shape的內容請移步。
最終的效果展示:
當然還有很多其他的變通方法,比如你也可以添加一個view把寬度設定為1dp,作為邊框。這個就需要你在實際開發中變通使用了。