2014-01-31 7 views
8

Ich habe benutzerdefinierte Widget für meine Android-Anwendung erstellt, und ich möchte benutzerdefinierte Stile dafür erstellen. Aber beim Parsen in der Klasse wird immer Null zurückgegeben. Durch mehrere Links gegangen und konnte nicht herausfinden, was das Problem ist? Kann jemand helfen ?Android Parsing-Stile für benutzerdefinierte Widget funktioniert nicht

Mein atttr.xml ist

<resources> 

    <declare-styleable name="Widget"> 
     <attr name="headers" format="reference" /> 
     <attr name="height" format="integer" /> 
    </declare-styleable> 

</resources> 

Widget-Klasse

public Widget(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    TypedArray attr = context.obtainStyledAttributes(attrs, 
      R.styleable.Widget); 
    String[] columns = (String[]) attr 
      .getTextArray(R.styleable.Widget_headers); 

    int height = attr.getInt(R.styleable.Widget_height, 0); 
}  

Und die Layout-Datei

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:widget="http://schemas.android.com/apk/lib/com.sample.custom" 
    android:id="@+id/statistics_fragment_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <com.sample.custom.Widget 
     android:id="@+id/widget" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     widget:headers="@array/headers" > 
    </com.sample.custom.Widget> 
</LinearLayout> 

Arrays.xml ist

<resources> 

    <string-array name="headers"> 
     <item>Header1</item> 
     <item>Header2</item> 
     <item>Header3</item> 
    </string-array> 

</resources> 

Antwort

0

Nachdem ich die verschiedenen Proben durchgegangen bin, habe ich das Problem herausgefunden.

ersetzt einfach die Linie

TypedArray attr = context.obtainStyledAttributes(attrs, 
     R.styleable.Widget); 

mit diesem

TypedArray attr = context.getTheme().obtainStyledAttributes(attrs, 
     R.styleable.Widget,0,0)