2017-04-04 4 views
1

Ich stehe vor diesem (für mich) seltsamen Problem. Nach ein paar Jahren von Xamarin Studio habe ich mich entschieden, mit dem Plugin für VisualStudio 2015 zu arbeiten. Ich arbeite gerade an einem Projekt für die Feldwartung, also das ist das erste, das ich migriert habe. Nachdem ich einige Probleme mit den RecyclerView- und CardView-Widgets gelöst habe, stehe ich vor diesem neuen Problem, das ich noch nie bei Xamarin Studio gesehen habe. Ich habe dieses einfache Layout für ein ViewHolder-Objekt, das einen Selektor als Hintergrund verwendet. Dies ist der Selektor (res/Farbe/item_bg_selector.xml):VisualStudio 2015 und Xamarin, inflates Fehler

<?xml version="1.0" encoding="UTF-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:color="#fffff2e6" /> 
    <item android:state_selected="true" android:color="#ffabfdc3" /> 
    <item android:color="@android:color/transparent" /> 
</selector> 

Dies ist der Punkt-Layout (res/layout/rowSpare.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="2dp" 
    android:background="@color/item_bg_selector"> 
    <TextView 
     android:id="@+id/tvSpareCode" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareCode" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSpareDescription" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareDescPrice" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSparePrice" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/sparePrice" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tvSpareQuantity" 
     android:layout_width="0dp" 
     android:layout_weight="@integer/spareQuant" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:textColor="@color/black" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
</LinearLayout> 

Dies ist der Auszug aus meiner benutzerdefinierten Adapter, wo der Fehler auftritt:

public class adSpareList : RecyclerView.Adapter 
    { 
.... 
     public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) 
     { 
      View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.rowSpare, parent, false); 
      itemView.Clickable = true; 
      SpareItemViewHolder vh = new SpareItemViewHolder(itemView, OnClick); 

      return (vh); 
     } 
    } 

Jedes Mal, wenn die erste Zeile des OnCreateView ausgeführt, um diesen Fehler gibt:

Unhandled Exception 
Android.Views.InflateException: Bonary XML file line #1: Error inflating class <unknown>. 

ohne weitere Informationen. Das gleiche Layout funktionierte gut in Xamarin Studio. Wenn ich Android entferne: background = "@ color/item_bg_selector", oder ich ersetze es mit einem einfachen Android: background = "@ android: color/transparent" funktioniert das Ganze ohne Fehler, aber es ist nicht das Ergebnis, das ich zuvor erreicht habe. Jede Hilfe wäre sehr zu schätzen.

Rodolfo.

+0

Wo haben Sie Ihre Wähler setzen? Wenn es sich unter dem Drawable-Ordner befindet, können Sie es vielleicht mit '@ drawable/item_bg_selector' versuchen. –

Antwort

0

Ich weiß nicht, wie das in Xamarin funktioniert und die gleiche Sache funktioniert nicht in Visual Studio, aber Sie verwenden sowieso Farbstatusliste, aber Farbstatuslisten können nicht als Hintergrund verwendet werden. Sie müssen die Statusliste als Hintergrund zeichnen. ändern, damit Ihr Code etwas wie folgt aus:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#fffff2e6" /> 
    </shape> 
</item> 
<item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffabfdc3" /> 
    </shape> 
    </item> 
    <item android:color="@android:color/transparent" /> 
</selector> 

finden Sie auf der Entwicklerseite: https://developer.android.com/guide/topics/resources/color-list-resource.html

Und ähnlich Gesendete Frage: How to set custom button state background color?

+0

Sie haben Recht. Unter Xamarin Studio war die XML-Datei tatsächlich eine aufklappbare Liste (jedes Zeichen war eine einfache Farbe); vielleicht funktioniert es nicht mit einfachen Farben, weil es ein LinearLayout-Hintergrund ist. Jedenfalls musste ich das Standard-Objekt mit "@android: color/transparent" entfernen, so als ob ich es verlassen würde, bekomme ich den gleichen Fehler. Vielen Dank. –

Verwandte Themen