创建自定义按钮并将其设置为默认样式

时间:2020-10-04 08:33:19

标签: android android-button

我想使用自定义按钮外观,所以我在这里https://stackoverflow.com/a/29848987/5616309

遵循了答案
  • 我在app / res / drawable中为不同状态的形状创建了xml文件
  • 我为选择器创建了一个xml文件,列出了app / res / drawable中所有状态的文件

这可行,如果我将属性更改为引用自定义按钮,则可以创建外观正确的按钮。

现在,我想将其设置为默认值,因此我在布局上添加的每个按钮都具有自动外观。因此,我将文件app / res / values / style.xml更改为这样(引用MyButton的行是我添加的行)

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="buttonStyle">@style/MyButton</item>
</style>

<style name="MyButton" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/my_button</item>
    <item name="android:gravity">center_vertical|center_horizontal</item>
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:shadowColor">#FF000000</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">-1</item>
    <item name="android:shadowRadius">0.2</item>
    <item name="android:textSize">16dip</item>
    <item name="android:textStyle">bold</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

它不起作用。我必须手动向每个按钮添加style="@style/MyButton"才能使其正常工作。我错过了什么?

2 个答案:

答案 0 :(得分:0)

您需要在AppTheme中进行以下更改-

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    ..............
    <item name="android:buttonStyle">@style/MyButton</item>

</style>

就是这样。祝您编码愉快!

答案 1 :(得分:0)

确保您的Activity使用AppTheme主题。 在部分活动android:theme="@style/AppTheme" int清单中添加android:name=".MainActivity