Android中的XML drawables问题

时间:2016-04-05 02:44:40

标签: java android button styles

几个小时前我刚刚在这里发布this question,经过一段艰难的时间后,我可以找出大量抽奖和活动中究竟出现了什么问题。但是现在我不明白为什么它不起作用。

我为一个按钮创建了一个xml drawable,然后我在styles.xml文件中定义了自己的样式。引起我注意的第一个问题是,当我在实际样式上调用xml drawable时,Android Studio无法显示图标,因此它会显示红色感叹号(在该行旁边的代码部分)。无论如何,它在大多数设备上运行良好,但我发现在某些特定情况下,会引发由xml drawable 引起的InflateException。我真诚地不知道我要展示的代码有什么问题。

这是xml drawable( default_button.xml ):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape android:shape="rectangle"  >
            <corners android:radius="5dp" />
            <stroke android:width="1dip" android:color="@color/green_temp" />
            <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/green_temp"  />
        </shape>
    </item>

    <item android:state_focused="true">
        <shape android:shape="rectangle"  >
            <corners android:radius="5dp" />
            <stroke android:width="1dip" android:color="@color/black" />
            <solid android:color="@color/bright_green"/>
        </shape>
    </item>
    <item >
        <shape android:shape="rectangle"  >
            <corners android:radius="5dp" />
            <stroke android:width="1dip" android:color="@color/bright_green" />
            <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/button_green" />
        </shape>
    </item>
</selector>

然后我在Styles.xml文件中设置这样的样式:

<style name="ButtonNormalText" parent="@android:style/Widget.Button">
        <item name="android:textColor" >@color/black</item>
        <item name="android:textSize" >25dip</item>
        <item name="android:height" >44dip</item>
        <item name="android:background" >@drawable/default_button</item>
          <item name="android:focusable" >true</item>
          <item name="android:clickable" >true</item>
</style>

抛出错误的行是:<item name="android:background" >@drawable/default_button</item>

这很奇怪,因为每当我调用@ drawable / xml_drawable时,它都抛出一个:

FATAL EXCEPTION: main
Process: myapp.miquel.mqlapps.hombresmujeresapp, PID: 13239
   java.lang.RuntimeException: Unable to start activity ComponentInfo{myapp.miquel.mqlapps.hombresmujeresapp/myapp.miquel.mqlapps.hombresmujeresapp.MenuActivity}: android.view.InflateException: Binary XML file line #43: Error inflating class android.support.v7.internal.widget.ActionBarContextView

Caused by: android.view.InflateException: Binary XML file line #43: Error inflating class android.support.v7.internal.widget.ActionBarContextView

Caused by: java.lang.reflect.InvocationTargetException

Caused by: java.lang.RuntimeException: org.xmlpull.v1.XmlPullParserException: <internal>: <nine-patch> requires a valid 9-patch source image

我真诚地不知道为什么它在大多数设备上工作但在另一台设备上失败。有什么想法吗?如果您需要查看更多代码,您可以访问我在本文开头提供的链接。提前致谢!

1 个答案:

答案 0 :(得分:0)

好的人,我终于通过从零启动应用程序来修复它。刚刚将原始代码复制到新项目中,一切都像黑魔法诅咒一样重新开始工作。对不起,我无法提出更具保障性的解决方案,但我真诚地知道如何解决这个奇怪的错误。

所有我能说的是R文件似乎在某些时候已经损坏,我没有意识到。因此,在创建一个新项目之后,由于新的R文件没有被破坏,应用程序再次开始工作。

感谢。