上面带描边的圆角,底部不描边的直角是需要切掉最下面的描边.
不再是纯用shape,而且要使用layer-list把底部的描边给切掉button=-1dp,达到了底部去掉描边的效果,
减去多少dp看设置的描边是多少dp
top_n.xml:正常情况
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-1dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFFFF"/> <stroke android:color="#FF999999" android:width="1dp" /> <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp"/> </shape> </item> </layer-list>
top_p.xml:按下情况
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-1dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#8066CCFF"/> <stroke android:color="#FF999999" android:width="1dp" /> <corners android:topLeftRadius="5dp" android:topRightRadius="5dp"/> </shape> </item> </layer-list>
btn_top_selector.xml:
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/top_p"></item> <item android:state_pressed="false" android:drawable="@drawable/top_n"></item> </selector>