在 styles.xml 設定 android:topLeftRadius 等屬性,Button 仍為直角,只有文字顏色生效。
Style 項目 android:radius、android:topLeftRadius 等**僅對 Shape Drawable 生效**,不直接作用於 View。Button 的預設背景為系統九宮格圖片,Style 無法穿透修改其圓角。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#DCDCDC" />
<corners android:radius="5dp" />
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="圓角按鈕"
android:background="@drawable/btn_rounded" />
<!-- 或在 Style 統一 -->
<style name="RoundedButton">
<item name="android:background">@drawable/btn_rounded</item>
<item name="android:textColor">#000000</item>
</style>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape><solid android:color="#E0E0E0"/><corners android:radius="5dp"/></shape>
</item>
<item android:state_focused="true">
<shape><solid android:color="#F0F0F0"/><corners android:radius="5dp"/></shape>
</item>
<item android:state_enabled="false">
<shape><solid android:color="#CCCCCC"/><corners android:radius="5dp"/></shape>
</item>
<item><!-- 預設 -->
<shape><solid android:color="#FFFFFF"/><stroke android:width="1dp" android:color="#DCDCDC"/><corners android:radius="5dp"/></shape>
</item>
</selector>
**圓角屬於背景繪製層面,必須定義於 Drawable(Shape/Selector),再由 android:background 參照。** Style 僅能設定背景引用,無法直接定義幾何形狀。