Android實現邊框

jopen 10年前發布 | 77K 次閱讀 Android Android開發 移動開發

京東的客戶端,在登錄頁面賬號和密碼上有邊框。自己也想加這個效果。但是發現android里并沒有border或類似的屬性。

有以下幾種解決方案。

1.嵌套一層,利用內容的margin或者padding的留白加容器的背景來實現邊框效果。

其實這個道理很簡單,很早的時候那時候我們還用table做html頁面布局的時候,我們就是使用cellspacing來實現table的邊框的。現在我們也利用同樣的想法來實現。

當然內部的容器也是需要有顏色的,如果想實現內部透明的效果則需要將內部View的背景色跟背景的顏色保持一致,這是不太方便的地方。

2圖片。

在Android中,給一個控件(或View)設置背景主要是通過background:xxx屬性來完成。background的參數一般來說是一個drawable資源。 drawable可以是一張普通的圖片,也可以是9 patch圖片,還可以是一個xml文件。 給控件設置邊框最簡單的方式就是把background設置成你預先設計好的帶圓角和邊框的背景圖。但是這種方法的缺點是沒有靈活性,不同大小的view要不同尺寸的圖片,還要去適應不同分辨率的設備。

3使用9-patch(九宮格)的背景圖片來實現邊框效果。

做一個有邊框的9-patch圖片,作為要有邊框的View的背景圖即可。這樣你還可以控制哪邊有邊框,哪邊無邊框,這種方法是比較好的一種方法,而且沒有多余的View嵌套。另外你還可以實現圓角邊框等效果。

4利用shape來實現邊框效果。

當然你可以使用shape中的stroke來實現border的效果。

/res/drawable/filename.xml

<?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作為背景圖片即可。

5.layer-list實現自由邊框

當前版本的Android SDK并沒有給stroke提供bottom、left、right之類的屬性,也就是說你無法通過它來讓長方形的邊框少于4條。于是有人想出了這個方法。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  
    <item>
        <shape android:shape="rectangle">
            <stroke 
                android:width="1dp"
                android:color="#333"/>
        </shape>
    </item>
    
    <item
        android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp">
        <shape android:shape="rectangle">
            <solid 
                android:color="#FFF"/>
        </shape>
    </item>

</layer-list>

在第二個item中定義的top,left...就是對應的邊框,不設置即沒有邊框。

來自:http://my.oschina.net/qii/blog/222700

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!