I'm trying to change progress bar's background with SVG vector drawable and I'm using supportLibrary and that's working perfectly on API 21 and higher versions of android but under API 21 it's just crashing. Here is the logs:
at com.myCompany.modules.presetshare.ui.components.MediaPlayerProgressBarCustomView.<init>(MediaPlayerProgressBarCustomView.java:23)
at com.myCompany.modules.presetshare.ui.components.MediaPlayerProgressBarCustomView.<init>(MediaPlayerProgressBarCustomView.java:18)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.myCompany.modules.presetshare.ui.PresetShareSaveFragmentView.onCreateView(PresetShareSaveFragmentView.java:72)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:703)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_tone_slider_filled.xml from drawable resource ID #0x7f08017c
and my custom progress bar class:
class AddToneProgressBarCustomView extends ProgressBar {
public AddToneProgressBarCustomView(Context context) {
super(context);
}
public AddToneProgressBarCustomView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public AddToneProgressBarCustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setProgressDrawable(ContextCompat.getDrawable(context, R.drawable.custom_add_tone_progress_bar));
}
}
Progress bar XML layer-list:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@drawable/ic_add_tone_slider" />
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/ic_add_tone_slider_filled" />
</item>
Then I've tried to change progress bar's background with creating a shape and passing parameter to set setProgressDrawable()
.
Like this:
Drawable shape = VectorDrawableCompat.create(getContext().getResources(), R.drawable.custom_add_tone_progress_bar, getContext().getTheme());
setProgressDrawable(shape);
but this solution fixed only crash problem. My app isn't crashing anymore but android isn't rendering the SVG file.
Anybody have any idea to fix this problem? This issue seems like a bug to me anymore. Thank you.