Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 向AppTheme添加按钮样式无效_Android_Button_Styles_Themes - Fatal编程技术网

Android 向AppTheme添加按钮样式无效

Android 向AppTheme添加按钮样式无效,android,button,styles,themes,Android,Button,Styles,Themes,我尝试向AppTheme添加自定义按钮样式,但它不起作用。作为参考,我在AppTheme中添加了一个微调器样式,效果很好。所以,我只需要找出我的按钮风格哪里出了问题 style.xml: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:spinnerStyle">@style/mySpinnerStyle</item>

我尝试向AppTheme添加自定义按钮样式,但它不起作用。作为参考,我在AppTheme中添加了一个微调器样式,效果很好。所以,我只需要找出我的按钮风格哪里出了问题

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:spinnerStyle">@style/mySpinnerStyle</item>
    <item name="android:buttonStyle">@style/myButtonStyle</item>
    <item name="buttonStyle">@style/myButtonStyle</item>
</style>

<style name="mySpinnerStyle" parent="@style/Widget.AppCompat.Spinner">
    <item name="overlapAnchor">true</item>
    <item name="android:background">@drawable/spinner_background</item>
    <item name="android:padding">5sp</item>
</style>

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

那么,为什么它直接在按钮属性中工作,而不是通过我的AppTheme?

1-在android studio中右键单击res/DRAWABLE FILE,创建新的可绘制资源文件

2-在其中编写如下代码:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
android:radius="100dp"
        />
    <solid
        android:color="#FFFFFF"

        />
    <size
        android:width="100dp"
        android:height="100dp"
        />

</shape>


3-打开包含此按钮的XML文件,并将按钮背景更改为之前创建的可绘制资源文件。1-在android studio中右键单击res/drawable file,创建新的可绘制资源文件

2-在其中编写如下代码:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
android:radius="100dp"
        />
    <solid
        android:color="#FFFFFF"

        />
    <size
        android:width="100dp"
        android:height="100dp"
        />

</shape>


3-打开包含此按钮的XML文件,并将按钮的背景更改为之前创建的绘图表,感谢Ahmad Sattout的回答

在我的按钮样式中,我从父项中删除了@style:

原件:

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

@可拉拔/按钮状态
真的
真的
更改:

<style name="myButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

@可拉拔/按钮状态
真的
真的

如果有人能更详细地解释为什么会发生这种情况,我们将不胜感激。

感谢艾哈迈德·萨图特的回答

在我的按钮样式中,我从父项中删除了@style:

原件:

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

@可拉拔/按钮状态
真的
真的
更改:

<style name="myButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

@可拉拔/按钮状态
真的
真的

如果有人能更详细地解释为什么会发生这种情况,我们将不胜感激。

主题的父级不需要@样式。并尝试将应用程序主题保留在清单中,以便于管理感谢您的反馈。我采纳了你的建议,现在一切正常。从“myButtonStyle”的父项中删除@style使其工作。虽然样式更改不会显示在IDE的预览中,但它仅在运行应用程序时显示。有什么想法吗?主题的父级不需要@样式。并尝试将应用程序主题保留在清单中,以便于管理感谢您的反馈。我采纳了你的建议,现在一切正常。从“myButtonStyle”的父项中删除@style使其工作。虽然样式更改不会显示在IDE的预览中,但它仅在运行应用程序时显示。有什么想法吗?谢谢,是的,我有一个类似的按钮文件。我没有显示该文件,因为我知道错误在我显示的代码中的某个地方。谢谢,是的,我有一个类似的按钮文件。我没有显示该文件,因为我知道错误在我显示的代码中的某个地方。这只是一个错误的编译。风格往往不会告诉你什么是错的,什么是错的。您添加了@style,但工作室不知道这是对还是错,这只是一个错误的编译。风格往往不会告诉你什么是错的,什么是错的。您添加了@样式,但工作室不知道这是对还是错