Android按钮主题不适用

问题描述 投票:0回答:1

我创建了非常简单的视图。我想为我的按钮创建默认布局并通过AppTheme导入它,我在清单文件中添加了它。

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="buttonStyle">@style/ButtonStyle</item>
    <item name="android:buttonStyle">@style/ButtonStyle</item>
    <item name="android:button">@style/ButtonStyle</item>
</style>
<style name="ButtonStyle" >
        <item name="android:textSize">20dp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">150dp</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginTop">10dp</item>
        <item name="android:background">@drawable/defaultbutton</item>
</style>

所以我期望将我的应用程序中的所有按钮设置为这个设置的样式。只有我可以完成它的方法是使用我的按钮导入样式

style="@style/ButtonStyle"

按钮'开始测试'通过内部导入设置样式。

有趣的是,某些样式被导入按钮“设置”和“检查传感器”(如可绘制/默认按钮或居中文本)

<Button
    style="@style/ButtonStyle"
    android:id="@+id/test"
    android:layout_height="50dp"
    android:text="Start Test" />

<Button

    android:id="@+id/settings"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:text="Settings" />

<Button
    android:id="@+id/checkSensors"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:text="Check Sensors" />

我的问题是,为什么会发生这种情况,如果不通过“主题”导入它,我就无法将其设置为默认值?

尝试this并阅读this但它不适合我。

android android-layout themes android-theme android-styles
1个回答
0
投票

自定义样式应扩展Widget样式以与buttonStyle属性一起使用。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="buttonStyle">@style/Widget.AppCompat.Button.ButtonStyle</item>
</style>
<style name="Widget.AppCompat.Button.ButtonStyle">
        <item name="android:textSize">20dp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">150dp</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginTop">10dp</item>
        <item name="android:background">@drawable/defaultbutton</item>
</style>
© www.soinside.com 2019 - 2024. All rights reserved.