2016-08-26 4 views
0
public final class ProgressWidget extends LinearLayout { 

    <Default Constructors implemented> { 
     setOrientation(LinearLayout.VERTICAL); 
     inflate(context, R.layout.horizontal_progress, this); 
    } 

    @Override 
    protected void onFinishInflate() { 
     //Continue with rest of the logic. 
    } 
} 

R.layout.horizontal_progress имеет 35 строк.android.view.InflateException: двоичная строка XML-файла # 39: ошибка раздувания класса ProgressWidget

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android"> 

<TextView 
    android:id="@+id/progressTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/rounded_white_background" 
    android:gravity="center" 
    android:textColor="@color/light_black" 
    android:textSize="12sp" 
    android:fontFamily="roboto-regular" 
    android:paddingTop="1dp" 
    android:paddingBottom="1dp" 
    android:paddingLeft="2dp" 
    android:paddingRight="2dp" /> 

<SeekBar 
    android:id="@+id/progress" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/horizontal_progress_height" 
    android:indeterminate="false" 
    android:progressDrawable="@drawable/horizontal_progress" 
    android:gravity="center" 
    android:thumb="@null" 
    android:progress="0" 
    android:secondaryProgress="0" 
    android:max="100" 
    android:minHeight="@dimen/horizontal_progress_height" 
    android:paddingTop="1dp" 
    android:paddingBottom="1dp" 
    android:paddingLeft="2dp" 
    android:paddingRight="2dp" /> 

</merge> 

R.drawable.horizontal_progress имеет 36 линий.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"> 
<item android:id="@android:id/background"> 
    <shape android:shape="rectangle" > 
     <corners android:radius="@dimen/horizontal_progress_radius" /> 
     <gradient 
      android:startColor="@color/horizontal_progress_background" 
      android:endColor="@color/horizontal_progress_background" 
      android:angle="270"/> 
    </shape> 
</item> 
<item android:id="@android:id/secondaryProgress"> 
    <clip> 
     <shape android:shape="rectangle" > 
      <corners android:radius="@dimen/horizontal_progress_radius" /> 
      <gradient 
       android:startColor="@android:color/white" 
       android:endColor="@android:color/white" 
       android:angle="270"/> 
     </shape> 
    </clip> 
</item> 
<item android:id="@android:id/progress"> 
    <clip> 
     <shape android:shape="rectangle" > 
      <corners android:radius="@dimen/horizontal_progress_radius" /> 
      <gradient 
       android:startColor="?android:attr/colorAccent" 
       android:endColor="?android:attr/colorAccent" 
       android:angle="270" 
       tools:ignore="NewApi"/> 
     </shape> 
    </clip> 
</item> 
</layer-list> 

Последний отрезок следа стека.

Вызванный: android.view.InflateException: Binary XML файл строка # 39: Ошибка при наполнении класса ProgressWidget в android.view.LayoutInflater.createView (LayoutInflater.java:620) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:696) на android.view.LayoutInflater.rInflate (LayoutInflater.java:755) в android.view.LayoutInflater.rInflate (LayoutInflater.java:758) в android.view.LayoutInflater.inflate (LayoutInflater. java: 462) на android.view.LayoutInflater.inflate (LayoutInflater.java:397) на android.view.LayoutInflater. (LayoutInflater.java:353) на android.view.View.inflate (View.java:1746

Все работает прямо на телефоне - Samsung Galaxy S5 SM-G900A, версия Android 5.0. Всегда сбой с превышением стека на Asus Nexus 7, Android 4.4.3.

Этот ProgressWidget представляет собой настраиваемый компонент многократного использования модуля библиотеки Android, который будет использоваться с модулем проекта. Ожидается, что основной модуль проекта будет обслуживать minSDKVersion 16 вплоть до TargetSDKVersion 24.

Будут оценены любые указатели относительно того, что может вызвать сбои только на планшетном устройстве.

ответ

0

Попробуйте изменить цвет в последнем градиенте (тот, который имеет линию tools:ignore="NewApi"). Эти два цвета не определены в SDK < 21. Если это не решит проблему, отправьте больше информации о трассе стека.

+0

У меня есть еще одна проблема, и я предполагаю, как, вероятно, связаны. http://stackoverflow.com/questions/39173996/android-resolving-style-properties-and-attributes Рассмотрите этот ProgressWidget как пользовательский виджет в библиотечном модуле, и я пытаюсь разрешить тему из главного модуля проекта на время выполнения. В любом случае, я попробовал «attr/colorAccent», но безрезультатно. – AndroidRocks