最近開發(fā)的項目中使用的圓角背景和邊框比較多,基本都是使用shape文件和.9圖片實現(xiàn)的。但在實現(xiàn)的過程中也是會出現(xiàn)一些小問題庐扫,這篇隨筆會總結(jié)下來其中遇到的問題攒磨。
一灭返,圓角大小不一致
1,四周圓角都為10dp 的shape設(shè)置
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_ffffff" />
<corners
android:bottomLeftRadius="@dimen/s_10dp"
android:bottomRightRadius="@dimen/s_10dp"
android:topLeftRadius="@dimen/s_10dp"
android:topRightRadius="@dimen/s_10dp" />
</shape>
2涵叮,四周圓角左右下方為10dp惭蹂,左上方為30dp,右上方為20dp 的shape設(shè)置
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_ffffff" />
<corners
android:bottomLeftRadius="@dimen/s_10dp"
android:bottomRightRadius="@dimen/s_10dp"
android:topLeftRadius="@dimen/s_30dp"
android:topRightRadius="@dimen/s_20dp" />
</shape>
二,外層父布局和內(nèi)層子布局同時設(shè)置圓角
1割粮,比如最外層布局設(shè)置四周圓角都為10dp 盾碗,而右下角的(TextView是)設(shè)置為30dp ,填充顏色為#4db8ff
外層和內(nèi)層shape分別如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_ffffff" />
<corners
android:bottomLeftRadius="@dimen/s_10dp"
android:bottomRightRadius="@dimen/s_10dp"
android:topLeftRadius="@dimen/s_10dp"
android:topRightRadius="@dimen/s_10dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_4db8ff" />
<corners
android:bottomRightRadius="@dimen/s_30dp" />
</shape>
切記如果外層已經(jīng)設(shè)置了圓角,內(nèi)層match_parent后舀瓢,如果背景僅僅設(shè)置一個背景顏色的話置尔,會把外層的圓角覆蓋掉,效果如下
這時候需要給右下角的TexeView單獨設(shè)置一個bottomRightRadius和外層的圓角保持一致
三榜轿,圓角和邊框同時存在
項目中如果有多個有相同邊框的view拼接在一塊,會有重復(fù)的邊框朵锣,造成中間邊框變粗谬盐,從而影響效果。
可以通過以下代碼處理,給右邊view的左邊框設(shè)置為-1dp(絕對值和邊框一致)诚些,則右邊view的左邊框不再顯示飞傀』市停或者給左邊view的右邊框設(shè)置為-1dp(絕對值和邊框一致)亦可。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- item 的top left right bottom 相當(dāng)于margin 設(shè)置不需要的邊為負(fù)值 -->
<item
android:left="-1dp">
<shape>
<!-- 背景顏色 -->
<solid android:color="#ffffff" />
<!-- 邊框顏色 -->
<stroke
android:width="1dp"
android:color="#ff0000" />
<corners
android:topRightRadius="10dp"
android:bottomRightRadius="10dp" />
</shape>
</item>
</layer-list>