у меня есть этот код из RatingBar android - custom draw runtimeAndroid SetTint больше не работает
Он работал до которого я использовал, чтобы изменить цвет графики на мой рейтинг управления:
vthf.rating.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//--
float touchPositionX = event.getX();
float width = vthf.rating.getWidth();
float starsf = (touchPositionX/width);
starsf = starsf * param_final__data.score_max;
int starsint = (int) Math.round(starsf);
byte starsbyte = (byte) starsint;
param_final__data.score_cur = starsbyte;
starsf = starsint;
vthf.rating.setRating(starsf);
//--
int color = Color.BLACK;
switch (starsbyte % 4) {
case 0: color = Color.BLUE; break; // 4 stars
case 3: color = Color.GREEN; break;
case 2: color = Color.YELLOW; break;
case 1: color = Color.RED; break;
}
final LayerDrawable layerDrawable = (LayerDrawable) vthf.rating.getProgressDrawable();
Drawable myWrap = layerDrawable.getDrawable(2);
//--
//
//--
myWrap = DrawableCompat.wrap(myWrap);
//myWrap = myWrap.mutate();
//--
// myWrapMutate.setColorFilter(color, PorterDuff.Mode.SRC_IN);
// DrawableCompat.setTintList(myWrap, ColorStateList.valueOf(color));
//--
DrawableCompat.setTint(myWrap, color);
//--
vthf.rating.invalidate();
}
else
if (event.getAction() == MotionEvent.ACTION_DOWN) {
param_final__view.setPressed(true);
}
else
if (event.getAction() == MotionEvent.ACTION_CANCEL) {
param_final__view.setPressed(false);
}
return true;
}
});
Я считаю, что он перестал работать после того, как я обновлен от Android Studio 1.5.1 и всех библиотек поддержки (не уверен, какая версия). Я не уверен на 100%, хотя, поскольку я не уверен, что я немедленно устранил проблему или был здесь дольше.
Я tesing на Huawei P6 Android 4.4.2
Мой Gradle выглядит как его:
compileSdkVersion 23
buildToolsVersion '23'
dependencies {
compile 'com.android.support:support-v4:+'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:+'
}
Мой манифеста этот
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17"
/>
Это мой лучший свинец почему код больше не работает, но я открыт для всех видов предложений, если мне не хватает чего-то очевидного, что может привести к тому, что это не связано с версиями API.
--- Примечание ---
Этот код появляется подкрасить рисунок немного темнее:
final LayerDrawable layerDrawable = (LayerDrawable) vthf.rating.getProgressDrawable();
Drawable myWrap = layerDrawable.getDrawable(2);
myWrap = DrawableCompat.wrap(myWrap);
DrawableCompat.setTint(myWrap, color);
Этот код не имеет никакого эффекта:
final LayerDrawable layerDrawable = (LayerDrawable) vthf.rating.getProgressDrawable();
Drawable myWrap = layerDrawable.getDrawable(2);
DrawableCompat.setTint(myWrap, color);
Не уверен, что сделать из вышесказанного. Может быть, проблема вызвана чем-то другим, чего я не понимаю. Если графика потемнеет, можно подумать, что она работает нормально ... Но это то же самое темное, какой бы он ни был цвет - по крайней мере, насколько мой глаз может сказать.
[http://stackoverflow.com/a/30876871/4049612](http://stackoverflow.com/a/30876871/4049612) проверить это – Krishna
Я считаю, что я уже пробовал все это (wrap, settintlist, settint, invalidateself), или я что-то упускаю? – Tom
@Krishna Вы предлагаете сделать что-то вроде этого «layerDrawable.setDrawable (2, myWrap)»; ?Он сбой (и не был необходим ранее) – Tom