簡體   English   中英

Android中XML可繪制對象的問題

[英]Problems with XML drawables in Android

幾個小時前,我剛剛在這里發布了這個問題 ,經過一段艱難的時期,我可以發現大量可繪制對象和活動中實際出了什么問題。 但是現在是我真的不明白為什么它不起作用的時候了。

我為一個按鈕創建了一個可繪制的xml,然后在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

我真不知道為什么它在大多數設備上都可以運行,但是在另一台設備上卻失敗了。 有什么想法嗎? 如果您需要查看更多代碼,則可以實際訪問我在本文開頭提供的鏈接。 提前致謝!

好的,我終於通過從零啟動應用程序來解決了這個問題。 只需將原始代碼復制到新項目中,一切就會像黑魔咒一樣再次開始工作。 對不起,我無法提出更具體的解決方案,但這是我真誠地解決了這個奇怪的錯誤的方法。

我只能說R文件似乎在某個時候被損壞了,而我沒有意識到。 因此,在創建新項目后,由於新的R文件未損壞,因此該應用程序再次開始工作。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM