您必须从按钮中获取 Drawable,因为您尝试使用的 setColorFilter(在您的设置中)适用于那些。
ImageButton btn = (ImageButton) myLayout.findViewByID(R.id.my_button);
int mycolor = getResources().getColor(R.color.best_color);
btn.getDrawable().setColorFilter(mycolor, PorterDuff.Mode.SRC_ATOP);
只要您对 Drawable 对象有正确的引用,
e.g. textView.getCompoundDrawables()[2].setColorFilter(...);
在其 xml 中:
<TextView
...
android:drawableLeft="..."
...
/>
您可以根据自己的喜好使用 myDrawableObject.setColorFilter()。
编辑:
对于 ImageButton,drawableimageButton.getDrawable()
对应于属性,android:src="..."
而imageButton.getBackground()
对应于android:background="..."
属性。确保在正确的可绘制对象上调用 setColorFilter。