Pij*_*usn 256 android background view drawable
我想设置一个视图的背景可绘制.有两种方法(据我所知):setBackground
和setBackgroundDrawable
.
当我使用时setBackground
,它表示它已经在API级别16中添加,但我的项目的最小SDK版本是7.我认为它不适用于16以下的任何东西,我是对的吗?但是当我使用setBackgroundDrawable时,它表示它已被弃用.
我应该用什么?
War*_*zit 403
它已被弃用但它仍然有效,所以你可以使用它.但是如果你想要完全正确,只是为了它的完整性...你会做如下的事情:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
setBackgroundDrawable();
} else {
setBackground();
}
Run Code Online (Sandbox Code Playgroud)
为此,您需要将buildTarget api 16和min build设置为7或类似的东西.
Lud*_*vic 111
您可以使用setBackgroundResource()
API级别1.
and*_*per 55
似乎目前存在2个功能之间没有区别,在如图所示的源代码(信贷此篇):
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }
Run Code Online (Sandbox Code Playgroud)
所以它只是一个命名决定,类似于fill-parent vs match-parent.
Jos*_*eia 18
我知道这是一个老问题,但我有类似的情况,我的解决方案是
button.setBackgroundResource( R.drawable.ic_button );
Drawable d = button.getBackground();
Run Code Online (Sandbox Code Playgroud)
然后你可以使用"Drawable",应用彩色滤镜等
Emm*_*mos 12
你可以setBackgroundResource()
改用ierelativeLayout.setBackgroundResource(R.drawable.back);
这对我有用.
使用Android studio 1.5.1我收到以下警告:
Call requires API level 16 (current min is 9): android.view.View#setBackground
Run Code Online (Sandbox Code Playgroud)
和关于弃用的投诉
'setBackgroundDrawable(android.graphics.drawable.Drawable)' is deprecated
Run Code Online (Sandbox Code Playgroud)
使用这种格式,我摆脱了两个:
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
//noinspection deprecation
layout.setBackgroundDrawable(drawable);
} else {
layout.setBackground(drawable);
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用其中任何一个选项.它无论如何都会起作用.您的颜色可以是十六进制代码,如下所示:
myView.setBackgroundResource(ContextCompat.getColor(context, Color.parseColor("#FFFFFF")));
Run Code Online (Sandbox Code Playgroud)
一个颜色资源,如下所示:
myView.setBackgroundResource(ContextCompat.getColor(context,R.color.blue_background));
Run Code Online (Sandbox Code Playgroud)
或者是自定义xml资源,如下所示:
myView.setBackgroundResource(R.drawable.my_custom_background);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
归档时间: |
|
查看次数: |
201993 次 |
最近记录: |