首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Button 圓角 Style 不生效?同 37932:必須用 Shape Drawable 做 background

     編輯:程式設計綜合問答

問題現象

在 styles.xml 設定 android:topLeftRadius 等屬性,Button 仍為直角,只有文字顏色生效。

原因

Style 項目 android:radius、android:topLeftRadius 等**僅對 Shape Drawable 生效**,不直接作用於 View。Button 的預設背景為系統九宮格圖片,Style 無法穿透修改其圓角。

解決方案:建立 Shape Drawable 並套用至 background

1. res/drawable/btn_rounded.xml

<?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>

2. 佈局或 Style 參照

<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 實現按下/聚焦/禁用狀態圓角

<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 僅能設定背景引用,無法直接定義幾何形狀。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved