在自定义ProgressBar时,可能出现getProgress和setProgress异常的情况,不管怎么折腾getProgress一直等于0
问题出现的原因可能是因为提供的构造方法有问题。如果自定义的ProgressBar没有提供以下的构造方法,
public MyHorizontalProgressBar(Context context, AttributeSet attrs, int defStyleAttr){ super(context, attrs, defStyleAttr); }则默认进入父类以下的构造方法
public ProgressBar(Context context, AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.progressBarStyle); }这里 defStyleAttr = com.android.internal.R.attr. progressBarStyle,可能就是这个progressBarStyle造成了混乱。
解决方法:提供第三个构造方法
public MyHorizontalProgressBar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyHorizontalProgressBar(Context context, AttributeSet attrs, int defStyleAttr){ super(context, attrs, defStyleAttr); }