java.lang.UnsupportedOperationException:无法转换为dimension:type = 0x1

时间:2013-10-25 15:15:13

标签: android android-layout

java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1
android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
at android.widget.ImageView.<init>(ImageView.java:137)
at android.widget.ImageButton.<init>(ImageButton.java:85)
at android.widget.ImageButton.<init>(ImageButton.java:81)

上面是错误,下面是错误的布局。我读到的一切都说xml需要有一个父布局,我的布局就是这样。还有什么可能是错的?

这是我在启动应用时启动的主要活动的布局

这是我的最小/目标

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/app_name"
        android:id="@+id/textView"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="32sp"
        android:layout_centerHorizontal="true"
        android:background="#292929"
        android:gravity="center_vertical|center_horizontal"
        android:minHeight="@dimen/header_height" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/apply"
        android:id="@+id/apply"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="24sp"
        android:background="#3fb0ff"
        android:layout_weight="1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/wallpaper"
        android:id="@+id/wallpapers"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="24sp"
        android:background="#3994d8"
        android:layout_weight="1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/request_icons"
        android:id="@+id/requesticons"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="24sp"
        android:background="#3376b4"
        android:layout_weight="1" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/view_icons"
        android:id="@+id/viewicons"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true"
        android:textSize="24sp"
        android:background="#2c5f95"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="false"
        android:layout_alignParentStart="false"
        android:measureWithLargestChild="false"
        android:orientation="horizontal">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/rate"
            android:maxHeight="100dp"
            android:background="@color/transparent"
            android:src="@drawable/main_button_bottom_rate"
            android:scaleType="fitXY"
            android:layout_weight="1" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/gplus"
            android:maxHeight="100dp"
            android:src="@drawable/main_button_bottom_gplus"
            android:layout_weight="1"
            android:background="@color/transparent"
            android:scaleType="fitXY" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/morework"
            android:layout_weight="1"
            android:background="@color/transparent"
            android:maxHeight="100dp"
            android:src="@drawable/main_button_bottom_morework"
            android:scaleType="fitXY" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/contact"
            android:background="@color/transparent"
            android:layout_weight="1"
            android:maxHeight="100dp"
            android:src="@drawable/main_button_bottom_contact"
            android:scaleType="fitXY" />
    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

你的问题出在你的ImageButtons上......我不认为XML inflater对你同时使用权重和maxHeight感到满意......但它可能会因为你的ImageButtons上的一个属性而通过是为了更高的API。检查开发人员指南中的所有内容,或逐个删除它们,直到崩溃消失。看起来你的所有ImageButton大部分都是相同的,所以我也把它拿到一个进行测试......

public int getDimensionPixelSize(int index, int defValue) {
    index *= AssetManager.STYLE_NUM_ENTRIES;
    final int[] data = mData;
    final int type = data[index+AssetManager.STYLE_TYPE];
    if (type == TypedValue.TYPE_NULL) {
        return defValue;
    } else if (type == TypedValue.TYPE_DIMENSION) {
        return TypedValue.complexToDimensionPixelSize(
            data[index+AssetManager.STYLE_DATA], mResources.mMetrics);
    }

    throw new UnsupportedOperationException("Can't convert to dimension: type=0x" // Line 463 of TypedArray.java
            + Integer.toHexString(type));
}