我想设置一个视图的背景可绘制.有两种方法(据我所知):setBackground和setBackgroundDrawable.
当我使用时setBackground,它表示它已经在API级别16中添加,但我的项目的最小SDK版本是7.我认为它不适用于16以下的任何东西,我是对的吗?但是当我使用setBackgroundDrawable时,它表示它已被弃用.
我应该用什么?
所以我的sdk从15到21,当我打电话时setBackgroundDrawable(),Android Studio告诉我它已被弃用.
我想过用它来绕过它:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm));
} else {
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
}
Run Code Online (Sandbox Code Playgroud)
但是,我在"setBackground()"收到错误.
那么,你会如何应对呢?
我正在开发小型Android应用程序,其中我将drawable资源设置为线性布局的背景.现在,我想要做的是动态地改变线性布局的背景颜色,但是在可绘制资源中.我的代码看起来像:
// bcd.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:endColor="#22000000"
android:startColor="#22000000"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/white" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
<LinearLayout
android:id="@+id/lin_llt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
Run Code Online (Sandbox Code Playgroud)
我在我的活动中设置了线性布局的背景,如下所示......
parentLayout = (LinearLayout) view.findViewById(R.id.lin_llt);
parentLayout.setBackgroundResource(R.drawable.bcd);
Run Code Online (Sandbox Code Playgroud)
现在我想做什么我想改变我的可绘制资源的颜色,这意味着改变我的线性布局的颜色,圆角和填充定义在drawable ..
我按照以下方式尝试了这个
ShapeDrawable bgShape = (ShapeDrawable )parentLayout.getBackground();
bgShape.getPaint().setColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
但它不适合我.任何其他解决方案
那怎么办......需要帮助......谢谢......