Question

I have created custom widget for my android application and i want to create custom styles for it. But while parsing it in the class returns always null. Gone through several links and couldn't figure out what the problem is ? Can anyone help ?

My atttr.xml is

<resources>

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

</resources>

Widget class

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);
}    

And the layout file

<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 is

<resources>

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

</resources>
Was it helpful?

Solution 2

After go through the several samples i figured out the problem.

Just replaced the line

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

with this

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

OTHER TIPS

did you try recycling the array at the end of view constructor? this link covers most of stuff - creating custom views

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top