在我的应用程序中,我有一些drawables,我给用户提供了使用sharedpreferences更改backgroundcolor的可能性。问题是,即使没有设置共享偏好,在某些移动电话上,drawable也会用黑色着色。旧手机上的问题API Level< 19.
我也尝试了drawable.setColorFilter(...)
:
Resources resForColorFilter = getApplicationContext().getResources();
Drawable drawableForColorFilter = resForColorFilter.getDrawable(R.drawable.soundshape);
if(backgroundcolorPref.equalsIgnoreCase("backgroundcolorString")){
Log.d("in backgroundcolorString", "in backgroundcolorString");
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
}
try {
if(!(backgroundcolorPref.equalsIgnoreCase(textFarbePref))){
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.parseColor(backgroundcolorPref), PorterDuff.Mode.CLEAR));
// wenn die Hintergrundfarbe gleich der Textfarbe ist
} else if(backgroundcolorPref.equalsIgnoreCase(textFarbePref)) {
// wenn der Hintergrund schwarz gefärbt ist
if(backgroundcolorPref.equalsIgnoreCase("#000000")){
textFarbePref = "#FFFFFF";
} else if(backgroundcolorPref.equalsIgnoreCase("#ffffff")){
textFarbePref = "#000000";
} else {
textFarbePref = "#000000";
}
}
} catch(IllegalArgumentException illegalArgumentException){
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
}
Resources res = getApplicationContext().getResources();
Drawable drawable = res.getDrawable(R.drawable.soundshape);
// das geladene Design auf der TextView anwenden, damit ein abgerunter Rahmen erscheint
soundUmrandung.setBackground(drawable);
if(backgroundcolorPref.equalsIgnoreCase("backgroundcolorString")){
Log.d("in backgroundcolorString", "in backgroundcolorString");
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
}
try {
if(!(backgroundcolorPref.equalsIgnoreCase(textFarbePref))){
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.parseColor(backgroundcolorPref), PorterDuff.Mode.CLEAR));
// wenn die Hintergrundfarbe gleich der Textfarbe ist
} else if(backgroundcolorPref.equalsIgnoreCase(textFarbePref)) {
// wenn der Hintergrund schwarz gefärbt ist
if(backgroundcolorPref.equalsIgnoreCase("#000000")){
textFarbePref = "#FFFFFF";
} else if(backgroundcolorPref.equalsIgnoreCase("#ffffff")){
textFarbePref = "#000000";
} else {
textFarbePref = "#000000";
}
}
} catch(IllegalArgumentException illegalArgumentException){
drawableForColorFilter.setColorFilter(new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.CLEAR));
}
Resources res = getApplicationContext().getResources();
Drawable drawable = res.getDrawable(R.drawable.soundshape);
// das geladene Design auf der TextView anwenden, damit ein abgerunter Rahmen erscheint
soundUmrandung.setBackground(drawable);
为什么某些手机上的彩绘颜色为黑色?
好吧,这似乎是API级别16的错误。我通过使用drawable.setAlpha(0)
的透明度来解决问题。
还有一个小问题:按钮的角落以及我在xml中指定的角落不再可见。